在 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

带有arraylist的listview,android中的简单适配器

更改了arraylist时,ArrayList和ListView的Android数组适配器不会更新