繁体   English   中英

单击AlertDialog按钮时如何获取listview所选项目文本

[英]how to get listview selected item text when clicked on AlertDialog button

我在android中开发一个简单的应用程序。 在这个应用程序中,我有一个列表视图,显示收件箱短信。 单击列表视图的任何项目时,会出现一个AlertDialog,其中包含“忽略”,“取消”和“修复”按钮。(请参阅图像)。

点击AlertDailog的“修复”按钮,我想获取listview所选项目的文本。

使用下面的代码,我得到字符串'str'中的文本是这样的: - com.example.myapp.Items@412a7d08 (在日志和吐司)。

我想要字符串'str'中的普通文本。 (即列表视图中所选项目的文本)。 或者换句话说,我想要与String str中的listview项相同的文本。

有人可以帮我解决这个问题吗?

这是我写的代码:

TextView tv_view_task;
ListView lv_view_task;
static String sms = "";
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_view_task);
    tv_view_task=(TextView) findViewById(R.id.tv_view_task);
    lv_view_task=(ListView) findViewById(R.id.lv_view_task);

    //List<String> msgList = getSms();
   MyAdapter adapter=new MyAdapter(this,getSms());
   lv_view_task.setAdapter(adapter);

   lv_view_task.setOnItemClickListener(new OnItemClickListener() {

    public void onItemClick(AdapterView<?> arg0, View arg1,final int arg2,
            long arg3) {
        // TODO Auto-generated method stub


        AlertDialog.Builder alert=new AlertDialog.Builder(ViewTask.this);
        alert.setTitle("What you want to do ?");
        alert.setIcon(R.drawable.ic_launcher);

        alert.setPositiveButton("Fix",new OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                String str=lv_view_task.getItemAtPosition(arg2).toString();
                Toast.makeText(getApplicationContext(), str,Toast.LENGTH_LONG).show();


            }
        });
        alert.setNegativeButton("Ignore",new OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub

            }
        });
        alert.setNeutralButton("cancel",new OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                dialog.cancel();
            }
        });
        AlertDialog ale=alert.create();
        ale.show();
    }
});
}

我的适配器代码是:

package com.example.myapp;

import java.util.ArrayList;

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

public class MyAdapter extends ArrayAdapter<Items> 
{

 private final Context context;
 private final ArrayList<Items> itemsArrayList;
public MyAdapter(Context context,ArrayList<Items>itemsArrayList) {
    super(context, R.layout.view_task_list_view,itemsArrayList);
    // TODO Auto-generated constructor stub
    this.context=context;
    this.itemsArrayList=itemsArrayList;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    LayoutInflater inflator=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View rowView=inflator.inflate(R.layout.view_task_list_view,parent,false);
    TextView label=(TextView) rowView.findViewById(R.id.label);
    //TextView view_task_priority=(TextView) rowView.findViewById(R.id.view_task_tv_priority);
    label.setText(itemsArrayList.get(position).getTitle());
    //view_task_priority.setText(itemsArrayList.get(position).getPriority());
    return rowView;
}

}

用于自定义列表视图的XML ...:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">

 <TextView
    android:id="@+id/label"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="30px"
    android:paddingLeft="5dp"
    android:text="title"
    android:textColor="@color/Black">
</TextView>

图像:1)ListView:

在此输入图像描述

2)AlertDialog:用户点击“修复”以获取listView的选定项目文本。

在此输入图像描述

lv_view_task.setOnItemClickListener(new OnItemClickListener() {

    public void onItemClick(AdapterView<?> arg0, View arg1,final int arg2,
            long arg3) {
        final View selectedView v = arg1 ; // Save selected view in final variable**

        AlertDialog.Builder alert=new AlertDialog.Builder(ViewTask.this);
        alert.setTitle("What you want to do ?");
        alert.setIcon(R.drawable.ic_launcher);

        alert.setPositiveButton("Fix",new OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                String str=lv_view_task.getItemAtPosition(arg2).toString();
                Toast.makeText(getApplicationContext(), str,Toast.LENGTH_LONG).show();
                //Access view object v here
                TextView label=(TextView) v.findViewById(R.id.label);
                String xyz = label.getText();

            }
        });

在方法中

onItemClick(AdapterView<?> arg0, View arg1,final int arg2,
            long arg3){

String txt = ((TextView)arg1).getText().toString();

}

您可以访问视图的文本arg1通过它铸造TextView ,授予您的方法访问getText()那么你可以用任何你想要的(当然,只有当视图是一个文本做textView )。

好吧..这个问题很老..所以我猜这是某种坟墓,但我的答案似乎还没有到这里来。

暂无
暂无

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

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