在ListView中选择项目,然后使用toast显示onClick上的自定义消息(对于每个项目)

时间:2012-02-06 07:36:14

标签: java android xml

基本上我正在做的是通过listview为用户提供一个术语列表。这些术语在strings.xml中定义为字符串:

<item name="Bahrain testing">Bahrain</item>
<item name="Bangladesh testing">Bangladesh</item>
<item name="Barbados testing">Barbados</item>
<item name="Belarus testing">Belarus</item>
<item name="Belgium testing">Belgium</item>
<item name="Belize testing">Belize</item>
<item name="Benin testing">Benin</item>

我在myActivity.java中处理ListView:

@Override
    public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.seoguide);

      String[] countries = getResources().getStringArray(R.array.seoterm_array);
        setListAdapter(new ArrayAdapter<String>(this, R.layout.seoguide, countries));

      ListView lv = getListView();
      lv.setTextFilterEnabled(true);

      lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {
          // When clicked, show a toast with the TextView text
          Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
              Toast.LENGTH_SHORT).show();

这就是我走到尽头的地方,我尝试通过获取属性来通过项目名称来定义它,但这似乎不起作用。

我怀疑一个问题可能来自没有在seoguide.xml中定义的clickable

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:textSize="22sp" >
</TextView>

但我还没有看到其他教程的XML中定义的可点击。

我想要发生的事情是,当用户选择巴林时,Toast会弹出一条消息,上面写着“Baharain是波斯湾西岸附近的一个小岛屿州”。

提前感谢您的帮助!

修改 将myview.xml更改为seoguide.xml - 它反映了相同的信息

2 个答案:

答案 0 :(得分:2)

    Use this..

    lv.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
              // When clicked, show a toast with the TextView text
String str_item = lv.getItemAtPosition(position).toString();
              Toast.makeText(getApplicationContext(), str_item,
                  Toast.LENGTH_SHORT).show();
       }
    }

答案 1 :(得分:1)

你需要把 .toString()

lv.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view,
        int position, long id) {
      // When clicked, show a toast with the TextView text
      Toast.makeText(getApplicationContext(), ((TextView) view).getText().toString(),Toast.LENGTH_SHORT).show();

希望这会起作用