Android 如何在自定义列表视图中将特定文本视图文本显示为toast消息?

Android 如何在自定义列表视图中将特定文本视图文本显示为toast消息?,android,listview,Android,Listview,我有一个自定义列表视图,每行有3个文本视图 这是我的自定义列表视图适配器。 如何在自定义列表视图中将特定文本视图文本显示为toast消息,以及如何在其他活动中发送该文本 细节是我的获取和设置类 public class CustomListViewAdapter extends ArrayAdapter<Details> { Context context; public CustomListViewAdapter(Context context, int resourceId

我有一个自定义列表视图,每行有3个文本视图 这是我的自定义列表视图适配器。 如何在自定义列表视图中将特定文本视图文本显示为toast消息,以及如何在其他活动中发送该文本

细节是我的获取和设置类

public class CustomListViewAdapter extends ArrayAdapter<Details> {

Context context;


public CustomListViewAdapter(Context context, int resourceId,
                             List<Details> items) {
    super(context, resourceId, items);
    this.context = context;
}



/*private view holder class*/
private class ViewHolder {
    //ImageView textView;
    TextView txtTitle;
    TextView txtTitle2;
    TextView txtDesc;
}

@SuppressLint("InflateParams")
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder = null;
    //Details rowItem = (Details) getItem(position);
    Details rowItem = getItem(position);
    context
            .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);

    if (convertView == null || convertView.getTag() == null) {

        LayoutInflater vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = vi.inflate(R.layout.list_item, null); //TODO: parent instead of null?

        holder = new ViewHolder();

        holder.txtDesc = (TextView) convertView.findViewById(R.id.desc);
        holder.txtTitle = (TextView) convertView.findViewById(R.id.title);
        holder.txtTitle2 = (TextView) convertView.findViewById(R.id.link);
        convertView.setTag(holder);


    }

    else if (rowItem.getResType().equals(vid)){

        holder = (ViewHolder) convertView.getTag();
    }
    if (holder != null) {
        holder.txtDesc.setText(rowItem.getResType());
        holder.txtTitle.setText(rowItem.getName());

        holder.txtTitle2.setText(rowItem.getUrl());

           }     

       return convertView;
    }

  }
公共类CustomListViewAdapter扩展了ArrayAdapter{
语境;
公共CustomListViewAdapter(上下文上下文,int resourceId,
(列表项目){
超级(上下文、资源ID、项目);
this.context=上下文;
}
/*私有视图持有者类*/
私有类视窗持有者{
//图像视图文本视图;
TextView-txtTitle;
TextView txtTitle2;
TextView-txtDesc;
}
@SuppressLint(“充气参数”)
公共视图getView(int位置、视图转换视图、视图组父视图){
ViewHolder=null;
//详细信息行项目=(详细信息)获取项目(位置);
详细信息行项目=获取项目(位置);
上下文
.getSystemService(活动.布局\充气机\服务);
if(convertView==null | | convertView.getTag()==null){
LayoutInflater vi=(LayoutInflater)context.getSystemService(context.LAYOUT\u INFLATER\u SERVICE);
convertView=vi.inflate(R.layout.list_item,null);//TODO:父项而不是null?
holder=新的ViewHolder();
holder.txtDesc=(TextView)convertView.findViewById(R.id.desc);
holder.txtTitle=(TextView)convertView.findViewById(R.id.title);
holder.txtitle2=(TextView)convertView.findViewById(R.id.link);
convertView.setTag(支架);
}
else if(rowItem.getResType().equals(vid)){
holder=(ViewHolder)convertView.getTag();
}
if(holder!=null){
holder.txtDesc.setText(rowItem.getResType());
holder.txtTitle.setText(rowItem.getName());
holder.txtitle2.setText(rowItem.getUrl());
}     
返回视图;
}
}

您可以在自定义适配器中覆盖
文本视图
OnClick
方法,并根据该方法,您可以在
Toast
中显示文本,如下所示

txttitle.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Toast.makeText(getActivity(),
“单击ListItem编号”+txttitle.getText().toString(),Toast.LENGTH\u LONG)
.show();
}
});

请参阅此代码:

public class profileAdapter extends ArrayAdapter<DTO_Detail> {

    public profileAdapter(Context context, int textViewResourceId) {
        super(context, textViewResourceId);
        // TODO Auto-generated constructor stub
    }

    @Override
    public View getView(final int position, View convertView,
            ViewGroup parent) {
        // TODO Auto-generated method stub
        // return super.getView(position, convertView, parent);
        View v = convertView;
        ViewWraperDV mwp;

        if (v == null) {
            LayoutInflater l = getLayoutInflater();
            v = l.inflate(R.layout.layoutrowtitle, null);
            mwp = new ViewWraperDV(v);
            v.setTag(mwp);
        } else {

            mwp = (ViewWraperDV) convertView.getTag();
        }

        TextView txtID = mwp.getLable();
        TextView txtTitle = mwp.getTitle();
        final DTO_Detail dt = this.getItem(position);
        txtTitle .setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                // you can get value of dt at here and process your code.
                Intent myinten = new Intent(MainActivity.this,
                        Detail.class);
                Bundle b = new Bundle();
                b.putString("Id", dt.ID);
                myinten.putExtras(b);
                startActivityForResult(myinten, 0);
            }
        }); 

        if (dt != null) {
            txtID.setText(dt.ID + ": ");
            txtTitle.setText(dt.Title);
        }
        return v;
    }
}

class ViewWraperDV {

    View base;
    TextView lable1 = null;
    TextView lable2 = null;

    ViewWraperDV(View base) {

        this.base = base;
    }

    TextView getLable() {
        if (lable1 == null) {
            lable1 = (TextView) base.findViewById(R.id.txtID);
        }
        return lable1;
    }

    TextView getTitle() {
        if (lable2 == null) {
            lable2 = (TextView) base.findViewById(R.id.txtTitle);
        }
        return lable2;
    }

}
公共类profileAdapter扩展了ArrayAdapter{
公共配置文件适配器(上下文上下文,int textViewResourceId){
super(上下文,textViewResourceId);
//TODO自动生成的构造函数存根
}
@凌驾
公共视图getView(最终整型位置,视图转换视图,
视图组(父级){
//TODO自动生成的方法存根
//返回super.getView(position、convertView、parent);
视图v=转换视图;
ViewWraperDV mwp;
如果(v==null){
LayoutInflater l=getLayoutInflater();
v=l.充气(R.布局.布局标题,空);
mwp=新视图WraperdV(v);
v、 setTag(mwp);
}否则{
mwp=(ViewWraperDV)convertView.getTag();
}
TextView txtID=mwp.getLable();
TextView txtTitle=mwp.getTitle();
最终DTO_详图dt=此.getItem(位置);
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
//您可以在这里获得dt的值并处理代码。
Intent myinten=新的Intent(MainActivity.this,
细节(类别);
Bundle b=新Bundle();
b、 putString(“Id”,dt.Id);
myinten.putExtras(b);
startActivityForResult(myinten,0);
}
}); 
如果(dt!=null){
txtID.setText(dt.ID+“:”);
txtTitle.setText(dt.Title);
}
返回v;
}
}
类ViewWraperDV{
视图库;
TextView标签1=null;
TextView标签2=null;
ViewWraperDV(视图库){
this.base=base;
}
TextView getLable(){
如果(标签1==null){
lable1=(TextView)base.findViewById(R.id.txtID);
}
返回标签1;
}
TextView getTitle(){
如果(标签2==null){
lable2=(TextView)base.findViewById(R.id.txtTitle);
}
返回标签2;
}
}

根据我的代码,我是这样做的:holder.txtitle2.setOnClickListener(new View.OnClickListener(){@Override public void onClick(View v){Toast.makeText(getContext(),“Click ListItem Number”+txtitle2.getText().toString(),Toast.LENGTH\u LONG).show();}});这一行的txtitle2中出现编译错误单击列表项编号“+txtitle2.getText().toString(),Toast.LENGTH_LONG.show();}”)我已经用我的自定义列表视图适配器类@Abhishek patelhanks@D更新了这个问题。您能解释一下Onclick方法和视图包装类中发生了什么吗