我在android中创建了一个简单的应用程序列表视图,因为我想在选择项目时做一个祝酒词,我尝试过如下但是它不起作用..
我的代码如下:
main.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();
}
});
}
}
请提前帮助我...
答案 0 :(得分:1)
我希望通过这种方式获得所选项目
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();
}
});
答案 1 :(得分: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();
该hashmap具有list
中存在的密钥。该列表实际上是您给出的from
数组。只需给出相应的键即可显示相应的文本。
它的工作。 :)
答案 2 :(得分:0)
尝试
String selectedValue = from[position];
答案 3 :(得分:0)
您可以使用适配器并从中获取值。
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();
}
答案 4 :(得分:0)
我对你在做什么很困惑,你为什么不这样做:
String selectedValue = items[position];
而不是:
String selectedValue =(String) (lv.getItemAtPosition(position));