【问题标题】:Toast not generating text from selected item from listToast 未从列表中的选定项目生成文本
【发布时间】:2013-06-11 06:55:31
【问题描述】:

我用列表视图在 android 中制作了一个简单的应用程序,我想在选择一个项目时祝酒,我尝试过如下但它不起作用..

我的代码如下:

ma​​in.java

    package com.example.listview;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import android.os.Bundle;
import android.app.Activity;
import android.app.ListActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import android.support.v4.app.NavUtils;

public class ListViewActivity extends Activity {


    String items[]={"Car","Bird","Bike","Flower"};
    String category[]={"Sports","Birds","Sports","Nature"};
    int icons[]={R.drawable.car,R.drawable.bird,R.drawable.bike,R.drawable.flower};

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list_view);
        List <HashMap<String,String>> aList=new ArrayList<HashMap<String,String>>();
        for(int i=0;i<4;i++)
        {
            HashMap<String,String> hm=new HashMap<String, String>();
            hm.put("txt","Item : "+items[i]);
            hm.put("category","Category : "+category[i]);
            hm.put("icon",Integer.toString(icons[i]));
            aList.add(hm);
        }
        String []from={"icon","txt","category"};
        int []to={R.id.image,R.id.text,R.id.category};
        SimpleAdapter adapter=new SimpleAdapter(getBaseContext(),aList,R.layout.list,from,to);
        final ListView lv=(ListView)findViewById(R.id.listView);
        lv.setAdapter(adapter);
        lv.setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> arg0, View arg1, int position,
                    long arg3) {
                // TODO Auto-generated method stub
                String selectedValue =(String) (lv.getItemAtPosition(position));
                Toast.makeText(getApplicationContext(),selectedValue , Toast.LENGTH_LONG).show();
            }
    });
    }


}

请提前帮帮我..thanx

【问题讨论】:

  • 什么都没有发生,因为 selectedValue 返回 null。
  • 那么我应该怎么做才能从列表“项目”中获取文本值?
  • 尝试在 onItemClick 中为 selectedValue 添加 Log,让我们知道你得到了什么。
  • @jigar 它的工作!检查这个stackoverflow.com/a/17038618/539472

标签: android listview adapter toast


【解决方案1】:
HashMap<String, String> selectedValue = (HashMap<String, String>) (lv.getItemAtPosition(position));         
ArrayList<String> list = new ArrayList<String>(selectedValue.keySet());             
Toast.makeText(getApplicationContext(), selectedValue.get("txt"), Toast.LENGTH_LONG).show();

该哈希映射具有存在于该list 中的键。该列表实际上是您提供的 from 数组。只需给对应的按键,即可显示对应的文字。

它的工作。 :)

【讨论】:

  • @sunil 当我尝试lv.getItemAtPosition(position).getClass() 时,它返回的对象是java.util.HashMap 类型。从那里我尝试获取键值,结果是 from[] 数组。
【解决方案2】:

我希望通过这种方式获得选中项

      lv.setOnItemClickListener(new OnItemClickListener() {

                    public void onItemClick(AdapterView<?> arg0, View arg1, int position,
                            long arg3) {
                        // TODO Auto-generated method stub
                     //  Toast.makeText(getApplicationContext(),"Position is: "+ position, Toast.LENGTH_LONG).show();
                       String selectedFromList = lv.getItemAtPosition(position).toString();
                        Toast.makeText(getApplicationContext(),selectedFromList , Toast.LENGTH_LONG).show();
                    }
            });

【讨论】:

  • 您在列表视图中看到列表项了吗?
  • 是的...... ListView 完全是用项目生成的,这没问题......但问题是当我点击列表 toast 中的任何项目时,应该生成显示该 ute 的类别和项目名称,但它不起作用。
  • 如果这不起作用,请尝试此编辑,然后尝试直接打印位置
【解决方案3】:

试试

String selectedValue = from[position];

【讨论】:

  • toast 生成“icon”、“txt”、“category”...我需要它的值...兄弟...!
【解决方案4】:

您可以使用适配器并从中获取价值。

public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) 
            String selectedValue =(String) (lv.getAdapter().getItem(position));
            Toast.makeText(getApplicationContext(),Toast.LENGTH_LONG).show();
        }

【讨论】:

    【解决方案5】:

    我对你在做什么感到很困惑,你为什么不这样做:

    String selectedValue = items[position];
    

    代替:

    String selectedValue =(String) (lv.getItemAtPosition(position));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-15
      相关资源
      最近更新 更多