[英]How to change the background color of a list item at click on a button?
我有一個ListView和一個CustomAdapter。 所有元素均已成功加載到列表中。 現在,我想通過單擊外部按鈕來更改列表中某個元素的背景色。 但是我不知道如何訪問列表中的特定項目。
這是CustomAdapter類:
public class CustomAdapter extends BaseAdapter {
private Context ctx;
private int resource;
private List<ItemModel> items;
public PreorderListAdapter(Context context, int resource, List<ItemModel> items){
this.ctx = context;
this.resource = resource;
this.items = items;
}
@Override
public int getCount() {
return items.size();
}
@Override
public ItemModel getItem(int position) {
return items.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@NonNull
@Override
public View getView(int i, View convertView, @NonNull ViewGroup parent) {
View view = convertView;
if(view == null){
LayoutInflater inflater = (LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(resource, null);
}
TextView text1 = (TextView) view.findViewById(R.id.text1);
TextView text2 = (TextView) view.findViewById(R.id.text2);
TextView text3 = (TextView) view.findViewById(R.id.text3);
ItemModel item = items.get(i);
text1.setText(item.getName());
text2.setText(item.getOption2());
text3.setText(item.getOption3());
return view;
}
}
您可以在getView()
方法中這樣做
view.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
view.setBackgroundColor(ContextCompat.getColor(this, R.color.yourcolor));
}
});
如果視圖上有一個按鈕,則對該按鈕執行偵聽器
如果要從父活動中獲取選定的項目視圖,則:
yourlistview.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent,View view, int position, long id)
{
selectedposition = position ;
}
});
View view = listView.getAdapter().getView(selectedposition,null,listview);
然后更改其背景:
view.setBackgroundColor(ContextCompat.getColor(this, R.color.yourcolor));
請在color.xml文件中定義顏色
如果您有多個視圖,則創建一個ArrayList<View>
並執行一些循環
在您的活動中創建一個自定義偵聽器接口,您的適配器將實現此目的。
public interface OnClickListenerFromActivity {
void onActivityButtonClick(int position);
}
單擊您的按鈕時,請調用聽眾的方法
mOnClickListenerFromActivity.onActivityButtonClick(mList.getItem(yourPostion));
在您的適配器中實現此偵聽器
public class CustomAdapter extends BaseAdapter implements Activity.OnClickListenerFromActivity {
private Context ctx;
private int resource;
private List<ItemModel> items;
public PreorderListAdapter(Context context, int resource, List<ItemModel> items){
this.ctx = context;
this.resource = resource;
this.items = items;
}
@Override
public int getCount() {
return items.size();
}
@Override
public ItemModel getItem(int position) {
return items.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@NonNull
@Override
public View getView(int i, View convertView, @NonNull ViewGroup parent) {
View view = convertView;
if(view == null){
LayoutInflater inflater = (LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(resource, null);
}
TextView text1 = (TextView) view.findViewById(R.id.text1);
TextView text2 = (TextView) view.findViewById(R.id.text2);
TextView text3 = (TextView) view.findViewById(R.id.text3);
ItemModel item = items.get(i);
text1.setText(item.getName());
text2.setText(item.getOption2());
text3.setText(item.getOption3());
return view;
}
public void onActivityButtonClick(int position) {
// get your item through position and
// set your color here
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.