gpt4 book ai didi

android - 我的 ListView 无法正常工作

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

我在布局中添加 ListView 时遇到一个问题。我在一个页面中实现了一个 ListView,我们在其中获取项目列表,因为当我们单击某个 ListMember 时,它会更改其颜色,再次单击它会将其更改为以前的颜色。现在想象一下,由于项目高度,一个屏幕可以容纳最大5 列表项目,下一位成员需要向下滚动才能看到。

现在假设 List 成员是

项目 1

项目 2

项目 3

项目 4

项目 5

项目 6

项目 7

在这些用途中,一次只能看到 5 个项目,现在当我点击“项目 1”(前五个成员中的第一个成员)时,它的颜色正在改变(比如从白色变为绿色)但是当我向下滚动时我看到 '项目 6'(前五个成员中的第一个成员)也更改了颜色(变为绿色),当我单击“项目 6”时,这次该成员的 setOnItemClickListener 被实际触发并尝试将其颜色更改为已更改的颜色。

这是 setOnItemClickListener 的代码:

productList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {

Log.i("imIn","Item Clicked");
v.animate();
if(listClicked[position]==0)
{
Log.i("***After*** ","Cyan Set ON");
v.setBackgroundColor(Color.parseColor("GREEN"));
listClicked[position]=1;
}
else if(listClicked[position]==1){
Log.i("***After*** ","Cyan Set OFF");
v.setBackgroundColor(Color.parseColor("WHITE"));

listClicked[position]=0;

}

}
});

AfterEdit::这是我的适配器

public class ProductListBaseAdapter extends BaseAdapter {
SharedPreferences sharedpreferences;

private static ArrayList<Product> searchArrayList;
private LayoutInflater mInflater;

ArrayList<TotalSelectedProduct> selectedProducts=new ArrayList<>();
final int[] listClicked;

public ProductListBaseAdapter(Context context, ArrayList<Product> totalProducts, int[] ClickedList) {
searchArrayList =totalProducts;
mInflater = LayoutInflater.from(context);
listClicked=ClickedList;
}

public int getCount() {
return searchArrayList.size();
}

public Object getItem(int position) {
return searchArrayList.get(position);
}

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

public View getView(final int position, View convertView, ViewGroup parent) {

ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.item_list, null);

holder = new ViewHolder();

holder.txtItem = (TextView) convertView.findViewById(R.id.item_name);
holder.edit=(Button)convertView.findViewById(R.id.edit);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}

/** I have tried inserting onClickListener in adapter also .but resulting same
*
holder.txtItem.setText(searchArrayList.get(position).getItemName());
final View.OnClickListener makeListener = new View.OnClickListener() {

@Override
public void onClick(View v) {

v.animate();
if(listClicked[position]==0)
{
Log.i("***After*** ","Cyan Set ON");
v.setBackgroundColor(Color.parseColor("#ff2dbeff"));
listClicked[position]=1;
}
else if(listClicked[position]==1){
Log.i("***After*** ","Cyan Set OFF");
v.setBackgroundColor(Color.parseColor("#009933"));
listClicked[position]=0;

}

}
};
holder.txtItem.setOnClickListener(makeListener); */


return convertView;
}

static class ViewHolder {
TextView txtItem;
Button edit;

}

为什么会这样?

最佳答案

要执行您想要的操作,您必须向 ListView 添加一个适配器,并在其中控制每个项目的点击方法。

更新示例

    public class ProductAdapter extends ArrayAdapter<Product> {

public PProductAdapter(Activity activity,
ArrayList<Product> products) {
super(activity, R.layout.item_product, products);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
final Product p = getItem(position);
ViewHolder viewHolder;
if (convertView == null) {
viewHolder = new ViewHolder();
LayoutInflater inflater = LayoutInflater.from(getContext());
convertView = inflater.inflate(R.layout.item_product, parent,
false);
viewHolder.name = (TextView) convertView.findViewById(R.id.tvName);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
convertView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
p.checked = !p.checked;
if (p.checked)
v.setBackgroundColor(Color.parseColor("#ff2dbeff"));
else
v.setBackgroundColor(Color.parseColor("#009933"));
}
});

viewHolder.name.setText(p.name);
return convertView;
}

private class ViewHolder {
TextView name;
}
}

public class Product{
public String name;
public boolean checked;
Product() {
name = "dummy name";
checked = false;
}
}

关于android - 我的 ListView 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31724783/

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