在我的 android 应用程序中滚动列表视图时,数据正在消失。我在片段中使用列表视图
Posted
技术标签:
【中文标题】在我的 android 应用程序中滚动列表视图时,数据正在消失。我在片段中使用列表视图【英文标题】:While Scrolling the listview in my android app the data is disappearing.I am using the listview inside a Fragment 【发布时间】:2019-12-02 10:25:52 【问题描述】:我正在使用 listview
内的 fragment
bottomnavigation
。每当listview
行超出屏幕时,它的值就会重置。
我尝试在我的代码中实现Recyclerview.Viewholder
,但它显示了一些错误,我不知道如何在我的代码中实现viewholder
。
public class AtcAdapter extends ArrayAdapter<AtcObjects>
public AtcAdapter(@NonNull Context context, int resource, List<AtcObjects> objects)
super(context, resource, objects);
@NonNull
@Override
public View getView(final int position, @Nullable View convertView, @NonNull final ViewGroup parent)
View ListItemView=convertView;
if(ListItemView==null)
ListItemView = LayoutInflater.from(getContext()).inflate(R.layout.atc_list, parent, false);
AtcObjects currentFood = getItem(position);
TextView foodName=(TextView) ListItemView.findViewById(R.id.atcFname);
foodName.setText(currentFood.getpName());
TextView fPrice=(TextView) ListItemView.findViewById(R.id.atcFprice);
fPrice.setText("Price :"+currentFood.getpPrice()+" RS");
TextView tvRes=(TextView) ListItemView.findViewById(R.id.tvResName);
tvRes.setText(""+currentFood.getResName()+" ResName");
String url=currentFood.getpIng();
ImageView imgV=(ImageView) ListItemView.findViewById(R.id.ivAtc);
Picasso.get().load(url).into(imgV);
final TextView textView=(TextView) ListItemView.findViewById(R.id.atcQty);
textView.setText(currentFood.qty+"");
Button addBtn=(Button) ListItemView.findViewById(R.id.atc_addBtn);
Button btnRemove=(Button) ListItemView.findViewById(R.id.atc_delete);
btnRemove.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
((ListView) parent).performItemClick(view, position, 66);
);
addBtn.setTag(position);
addBtn.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
updateQuantity(position,textView,1);
((ListView) parent).performItemClick(view, position, 56);
);
Button subbtn=(Button) ListItemView.findViewById(R.id.atc_subBtn);
subbtn.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
updateQuantity(position,textView,-1);
((ListView) parent).performItemClick(view, position, 90);
);
return ListItemView;
private void updateQuantity(int position, TextView edTextQuantity, int value)
AtcObjects products = getItem(position);
if(value > 0)
products.qty = products.qty + 1;
else
if(products.qty > 0)
products.qty = products.qty - 1;
edTextQuantity.setText(products.qty+"");
@Override
public int getViewTypeCount()
return getCount();
@Override
public int getItemViewType(int position)
return position;
【问题讨论】:
好吧,如果你想使用 RecyclerView,那么考虑放弃 ArrayAdapter,改用 RecyclerView.Adapter。 不,我不想使用 RecyclerView 它有点复杂。 这……真的不是。只需遵循指南即可。 【参考方案1】: You can create ViewHolder class as below:
static class ViewHolder
ImageView imageView;
TextView textView;
int position;
and inside getView() method use below code :-
@Override
public View getView(final int position, @Nullable View convertView, @NonNull final ViewGroup parent)
ViewHolder holder;
if (convertView == null)
convertView = mInflater.inflate(R.layout.view, null);
holder = new ViewHolder();
holder.textView= (TextView) convertView.findViewById(R.id.textView);
convertView.setTag(holder);
else
holder = (ViewHolder) convertView.getTag();
【讨论】:
以上是关于在我的 android 应用程序中滚动列表视图时,数据正在消失。我在片段中使用列表视图的主要内容,如果未能解决你的问题,请参考以下文章
android中带有Endless Listview Scroll的AsynTask