[英]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.