在 Arraylist 的 listview 的 listitem 上显示值
Posted
技术标签:
【中文标题】在 Arraylist 的 listview 的 listitem 上显示值【英文标题】:Display value on listitem of listview from Arraylist 【发布时间】:2015-10-04 03:12:18 【问题描述】:两个片段,
第一个片段将产品名称和价格的数组列表发送到第二个片段, 第二个片段正确获取所有值问题
我想在 TextView 上显示数据。怎么可能?
下面是我的代码
第一个片段
alists=new ArrayList<String>();
System.out.println("ARRAYLIST><><><><><"+alists);
GenericUtility.setStringToSharedPrefsForKey("selected_prodname", user_name, getActivity());
GenericUtility.setStringToSharedPrefsForKey("selected_prodprc", dollars+prod_price, getActivity());
btn_add_to_cart.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
cartincrement();
productnams = GenericUtility.getStringFromSharedPrefsForKey("selected_prodname", getActivity());
System.out.println("Seleced user name=-=-=-=-=-=-==-=" + productnams);
productprc = GenericUtility.getStringFromSharedPrefsForKey("selected_prodprc", getActivity());
System.out.println("Seleced prodprice=-=-=-=-=-=-==-=" + productprc);
alists.add(productnams);
alists.add(productprc);
);
relcart.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
Add_to_cart tf = new Add_to_cart();
Bundle bundle = new Bundle();
bundle.putStringArrayList("prodnam", alists);
// bundle.putString("prodprce", productprc);
tf.setArguments(bundle);
android.support.v4.app.FragmentManager fm = getFragmentManager();
android.support.v4.app.FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.frame_container, tf);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.addToBackStack(null);
ft.commit();
);
第二个片段
public class Add_to_cart extends Fragment
private Button continue_shopping;
private Button checkout;
ListView list;
private TextView _decrease,mBTIncrement,_value;
private CustomListAdapter adapter;
private ArrayList<String> alst;
private String bname;
public Add_to_cart()
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
final View rootView = inflater.inflate(R.layout.list_view_addtocart, container, false);
alst=new ArrayList<String>();
Bundle bundle = this.getArguments();
alst = bundle.getStringArrayList("prodnam");
System.out.println("NAM--"+alst);
/* for(int i=0;i<alst.size();i++)
bname=alst.get(i);
*/
continue_shopping=(Button)rootView.findViewById(R.id.btn_continueshoppping);
checkout=(Button)rootView.findViewById(R.id.btn_chckout);
adapter = new CustomListAdapter(getActivity(),alst);
list=(ListView)rootView.findViewById(R.id.list_addtocart);
list.setAdapter(adapter);
adapter.notifyDataSetChanged();
list.setOnItemClickListener(new AdapterView.OnItemClickListener()
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id)
// TODO Auto-generated method stub
);
continue_shopping.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
HomeFragment tf = new HomeFragment();
android.support.v4.app.FragmentManager fm = getFragmentManager();
android.support.v4.app.FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.frame_container, tf);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.addToBackStack(null);
ft.commit();
);
checkout.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
Checkout tf = new Checkout();
android.support.v4.app.FragmentManager fm = getFragmentManager();
android.support.v4.app.FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.frame_container, tf);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.addToBackStack(null);
ft.commit();
);
return rootView;
public class CustomListAdapter extends BaseAdapter
private Context context;
private ArrayList<String> listData;
//private AQuery aQuery;
String dollars="\u0024";
public CustomListAdapter(Context context,ArrayList<String> listData)
this.context = context;
this.listData=listData;
// aQuery = new AQuery(this.context);
@Override
public int getCount()
return listData.size();
@Override
public Object getItem(int position)
return listData.get(position);
@Override
public long getItemId(int position)
return position;
@Override
public View getView(final int position, View convertView, ViewGroup parent)
ViewHolder holder;
if (convertView == null)
holder = new ViewHolder();
convertView = LayoutInflater.from(getActivity()).inflate(R.layout.list_item_addtocart, null);
holder.txtproname = (TextView) convertView.findViewById(R.id.proname_addtocart);
holder.txtprofilecast = (TextView) convertView.findViewById(R.id.proprice_addtocart);
convertView.setTag(holder);
else
holder = (ViewHolder) convertView.getTag();
holder.txtproname.setText(listData.get(position));
holder.txtprofilecast.setText(dollars+listData.get(position));
//holder.txtprofilecast.setText(dollars+listData.get(position));
// aQuery.id(holder.propic).image(listData.get(position).get(TAG_IMAGE),true,true,0,R.drawable.ic_launcher);
return convertView;
class ViewHolder
ImageView propic;
TextView txtproname;
TextView txtprofilecast;
【问题讨论】:
它已经尝试过了..你可以在评论中看到尝试兄弟 那你为什么评论它 因为它没有给出完美的输出 在我的列表视图中,我得到了 holder.txtproname.setText(listData.get(position));如果我做这样的事情它给 listitem1-name listitem2-price listitem3-name1 listitem4-price1 我想要的是 listitem1-name 和 price listitem2-name1 和 price1 现在你明白了 它给出了什么输出?有没有崩溃?另外,为什么你将上下文传递给构造函数,而不是稍后在 getView 中使用它? 【参考方案1】:您的问题是您的项目列表实际上是应有的两倍。如果您的列表中有 4 个项目,那么您的数组中将有 8 个条目(每个项目有 2 个条目,一个名称和一个价格)。
您应该创建 2 个并行数组,而不是将名称和价格添加到单个数组中。第一个包含名称列表,第二个包含价格列表。将两个数组传递给第二个片段。
【讨论】:
就是这样做的,但是如果我有不同的产品的话……看这里***.com/questions/31451589/…以上是关于在 Arraylist 的 listview 的 listitem 上显示值的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 ArrayAdapter 在 ArrayList 中的 ListView 中显示项目(图像的路径)?
如何将第一个 Arraylist 放在 Item 中,将第二个 Arraylist 放在 SubItem 中(在 ListView 中)?
填充 Listview 时 Arraylist 和 Hashmap 的问题
如何在不显示附加信息的情况下将附加信息放入用于 ListView 的 Arraylist