简体   繁体   English

在Android的ListView中添加多个TextView

[英]add multiple textview in listview in android

This is my adapter class im beginer in android and i want to add multiple textview in listview using view holder and also a button should be there 这是我在android中的适配器类,是我的初学者,我想使用视图持有者在listview中添加多个textview,并且也应该有一个按钮

   package com.example.navigationdrawerexample;

    /**
     * Created by Dev2 on 12/7/2015.
     */

import java.util.ArrayList;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.TextView;

public class listadapterfdgdfg extends ArrayAdapter<String> {
    customButtonListener customListner;

    public interface customButtonListener {
        public void onButtonClickListner(int position,String value);
    }

    public void setCustomButtonListner(customButtonListener listener)
    {
        this.customListner = listener;
    }

    private Context context;

    private ArrayList<String> data = new ArrayList<String>();
    private ArrayList<String> Price = new ArrayList<String>();

    public listadapterfdgdfg(Context context, ArrayList<String> dataItem,ArrayList<String> price) {
        super(context, R.layout.child_row,dataItem);
        this.data = dataItem;
        this.Price=price;
        this.context = context;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        ViewHolder viewHolder;
        ViewHolder viewHolder2;
        if (convertView == null) {
            LayoutInflater inflater = LayoutInflater.from(context);
            convertView = inflater.inflate(R.layout.child_row, null);
            viewHolder = new ViewHolder();
            viewHolder2 = new ViewHolder();
            viewHolder.text = (TextView) convertView.findViewById(R.id.childTextView);
            viewHolder.prices =(TextView)convertView.findViewById(R.id.pricemine);

            //viewHolder2.prices= (TextView)convertView.findViewById(R.id.pricemine);
            viewHolder.button = (Button) convertView.findViewById(R.id.childButton);
            convertView.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
            viewHolder2 = (ViewHolder) convertView.getTag();
        }
        final String temp = getItem(position);

        viewHolder.text.setText(temp);

        final String temp1 =getItem(position);

        viewHolder.prices.setText(temp1);

        viewHolder.button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                if (customListner != null) {
                    customListner.onButtonClickListner(position,temp);
                }
            }
        });

        return convertView;
    }

    public class ViewHolder {
        TextView text;
        TextView prices;
        Button button;
    }
}

here I call this class in that way 在这里我以这种方式称呼这堂课

I add textview of price in xml also add price array list in constructor of listadapter it shows data of dataitems in screeen it shows same item name as price i know the problem but dont know how to tackle this the problem is here 我在xml中添加了价格的textview,也在listadapter的构造函数中添加了价格数组列表,它以screeen显示了数据项的数据,它显示了与价格相同的商品名称,我知道这个问题,但是不知道如何解决这个问题。

public listadapterfdgdfg(Context context, ArrayList<String>   dataItem,ArrayList<String> price) {
        super(context, R.layout.child_row,dataItem);
        this.data = dataItem;
        this.Price=price;
        this.context = context;
    }

It show price as if i declare price data it show itmename as if I declare itemlis data 它显示价格就像我声明价格数据一样,显示它我的名字就像我声明项目数据一样

在此处输入图片说明

wan to add price of items 湾增加项目价格

here is a full answer of what i told you: 这是我告诉你的完整答案:

1- the model class for data 1-数据的模型类

public class MyData{
    private String name = "";
    private double price = 0;

    //Setters and Getters...
}

2- the adapter class, rename to MyDataListAdapter 2-适配器类,重命名为MyDataListAdapter

public class MyDataListAdapter extends ArrayAdapter<MyData> {
    private ArrayList<MyData> data = null;

    public MyDataListAdapter(Context context, ArrayList<MyData> dataList) {
        super(context, R.layout.child_row,dataList);
        this.data = dataList;
        this.context = context;
    }//constructor


    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        ViewHolder viewHolder;
        if (convertView == null) {
            LayoutInflater inflater = LayoutInflater.from(context);
            convertView = inflater.inflate(R.layout.child_row, null);
            viewHolder = new ViewHolder();
            viewHolder.text = (TextView) convertView.findViewById(R.id.childTextView);
            viewHolder.prices =(TextView)convertView.findViewById(R.id.pricemine);
            viewHolder.button = (Button) convertView.findViewById(R.id.childButton);
            convertView.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }

        //you can use data.get(position) too
        final MyData myDataItem = getItem(position);

        viewHolder.text.setText(myDataItem.getName());
        viewHolder.prices.setText(myDataItem.getPrice());
        viewHolder.button.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if (customListner != null) {
                    //pass name or price, or pass myDataItem object and handle it at onButtonClickListner()
                    customListner.onButtonClickListner(position,myDataItem.getName());
                }

            }
        });

        return convertView;
    }

    public class ViewHolder {
        TextView text;
        TextView prices;
        Button button;
    }
}//MyDataListAdapter

now from activity or any place, instantiate adapter 现在从活动或任何地方实例化适配器

ArrayList<MyData> alldata = new ArrayList();
alldata.add(dataItem1); //.. add all items needed
MyDataListAdapter adapter = new MyDataListAdapter (context, alldata);
mListView.setAdapter(adapter);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM