gpt4 book ai didi

android - ListView,在Android中使用颜色代码数组更改每一行

转载 作者:行者123 更新时间:2023-11-30 01:33:30 34 4
gpt4 key购买 nike

我正在尝试更改每一行的颜色,我有 2 个数组。一个有颜色名称,另一个有颜色代码。

我有一个带有颜色名称的 ListView,这些名称存储在一个字符串数组中。

String[] colourNames;
String[] colourCodes;

protected void onCreate(Bundle savedInstanceState) {
colourNames = getResources().getStringArray(R.array.listArray);
colourCodes = getResources().getStringArray(R.array.listValues);

ListView lv = (ListView) findViewById(R.id.listView);

ArrayAdapter aa = new ArrayAdapter(this, R.layout.activity_listview, colourNames);

lv.setAdapter(aa);

for(int i=0; i<colourCodes.length; i++)
lv.getChildAt(i).setBackgroundColor(Color.parseColor(colourCodes[i]));
}

在 arrays.xml 中:

<string-array name="listArray">
<item>aliceblue</item>
<item>antiquewhite</item>
<item>aquamarine</item>
<item>azure</item>
</string-array>
<string-array name="listValues">
<item>00f0f8ff</item>
<item>00faebd7</item>
<item>007fffd4</item>
<item>00f0ffff</item>
</string-array>

应用在 lv.getChildAt(i).setBackgroundColor(Color.parseColor(colourCodes[i])); 处崩溃

最佳答案

您必须编写自己的自定义 ArrayAdapter。

先写一个颜色类:

color.java:

public class color {
private String name;
private String color;

public color(String name, String color) {
this.name = name;
this.color = color;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getColor() {
return color;
}

public void setColor(String color) {
this.color = color;
}
}

然后列表项布局:

list_item_layout.xml

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="match_parent" />

</LinearLayout>

最后编写自定义适配器:

ColorListAdapter.java:

public class ColorListAdapter extends BaseAdapter {
private LayoutInflater mInflater;
private List<color> mColorList;

public ColorListAdapter(Activity activity, List<color> mColorList) {
mInflater = (LayoutInflater) activity.getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
this.mColorList = mColorList;
}

@Override
public int getCount() {
return mColorList.size();
}

@Override
public Object getItem(int position) {
return mColorList.get(position);
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView;

// Get item_layout:
rowView = mInflater.inflate(R.layout.list_item_layout, null);

// Get TextView from item_layout:
TextView textView =
(TextView) rowView.findViewById(R.id.name);

// Get color and text from current position set TextView
color myColor = mColorList.get(position);
textView.setText(myColor.getName());
textView.setBackgroundColor(Color.parseColor(myColor.getColor()));
return rowView;
}
}

这些是 MainActivity.javaactivity_main.xml

MainActivity.java:

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

List<color> colorList = new ArrayList<>();

// Add color objects:
colorList.add(new color("RED", "#FF0000"));
colorList.add(new color("GREEN", "#00FF00"));
colorList.add(new color("BLUE", "#0000FF"));
colorList.add(new color("MY BEST", "#013583"));


// Add list to your custom adapter
ListView myListView = (ListView) findViewById(R.id.liste);
ColorListAdapter mAdapter = new ColorListAdapter(this, colorList);

// Set Adapter
myListView.setAdapter(mAdapter);

}

activity_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ListView
android:id="@+id/liste"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center" />

</RelativeLayout>

关于android - ListView,在Android中使用颜色代码数组更改每一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35418852/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com