-1

我在每一行都有listview一个图像和一个。textview我想在单击整行时获取文本的值。下面的代码表现得很奇怪。我得到的是随机行的值,而不是单击的值。

我没有得到什么是错的。任何帮助,将不胜感激。

我正在这样做,:

public static class LazyAdapter extends BaseAdapter {

    private Activity activity;
    private ArrayList<HashMap<String, String>> data;
    private static LayoutInflater inflater=null;
    public ImageLoader imageLoader; 

    public LazyAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
        activity = a;
        data=d;
        inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        imageLoader=new ImageLoader(activity.getApplicationContext());
    }

    public int getCount() {
        return data.size();
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(final int position, View convertView, ViewGroup parent) {
        View vi=convertView;
        if(convertView==null)
            vi = inflater.inflate(R.layout.list_row, null);

        title = (TextView)vi.findViewById(R.id.title); // title
        ImageView thumb_image=(ImageView)vi.findViewById(R.id.list_image); // thumb image

        HashMap<String, String> song = new HashMap<String, String>();
        song = data.get(position);

        // Setting all values in listview
        title.setText(song.get(Meida_listActivity.KEY_TITLE));
        imageLoader.DisplayImage(song.get(Meida_listActivity.KEY_THUMB_URL), thumb_image);


        vi.setOnClickListener( new View.OnClickListener()
        {


            public void onClick(View v)
            {
                  String listValue = (String) title.getText();
                  System.out.println("this is value of string ::: :::: " + listValue);

            }


        });
        return vi;
    }
}
4

6 回答 6

10

您也可以尝试实现单击列表视图并获取这样的文本!希望它有效..

listView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            TextView text = (TextView) view.findViewById(R.id.title);
            String lst_txt = text.getText().toString().trim();
            System.out.println("this is value of string ::: :::: " + lst_txt);
        }
    });
于 2013-08-21T11:20:48.013 回答
1

在您OnClickListener将代码更改为此:

  vi.setOnClickListener( new View.OnClickListener()
    {


        public void onClick(View v)
        {
              String listValue = (String) data.get(position).get(Meida_listActivity.KEY_TITLE);
              System.out.println("this is value of string ::: :::: " + listValue);

        }


    });

这样你就可以确保你引用了正确的行。

于 2013-08-21T11:21:54.177 回答
1

变量数据的类型数据是ArrayList

    HashMap<String, String> _hashMap = (HashMap<String, String>) data.get(position);
    String _test = _hashMap.get("Text").toString();
于 2015-08-28T09:56:31.747 回答
0
 vi.setOnClickListener( new View.OnClickListener()
    {
   public void onClick(View v)
        {
     title = (TextView)v.findViewById(R.id.title);
              String listValue = title.getText().toString();
              System.out.println("this is value of string ::: :::: " + listValue);

        }


    });
    return vi;
于 2013-08-21T11:22:28.280 回答
0

添加下面的行
listView.setOnItemClickListener(this);

和覆盖onItemClick方法。根据位置(第三个参数)检索对象。

于 2013-08-21T11:22:46.743 回答
0

将此侦听器用于 Activity oncreate 方法

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {     

    @Override
    public void onItemClick(AdapterView<?> av, View arg1, int index,
            long arg3) {


    // Perform Action here..... 
String value = av.getItemAtPosition(index).toString();
    }

  });
于 2013-08-21T11:23:11.837 回答