我有一个使用 SQlite 数据库填充的 ListView 。如果我单击 ListView 的行,我想将相应行的值传递给第二个 Activity ,并且我想在第二个 Activity 的编辑文本中显示它。我使用 Listadapter、hashmap 从数据库中填充列表。我正在使用 bundle 将值从一个 Activity 传递到另一个 Activity 。
我遇到的主要问题是如何在第二类中检索它。我尝试了各种方法。我已经使用简单的 vursor 适配器得到了答案,因为它在 android 中已被弃用,所以我想找到一个替代解决方案来在另一个 Activity 中传递 ListView 数据。
我的模型类:
public class Customer1 {
String name,id,price,type;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getNo() {
return name;
}
public void setNo(String no) {
this.name = no;
}
myadapter class:
public class FragmentMod extends Fragment {
Fragment fe= new FragmentOne();
Customer1 c= new Customer1();
HashMap<String, String> map = new HashMap<String, String>();
public FragmentMod()
{
}
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState)
{
//Inflate the layout for this fragment
View view =inflater.inflate(R.layout.fragment_mod, container, false);
setHasOptionsMenu(true);
ListView list =(ListView)view.findViewById(R.id.lvv2);
ArrayList<HashMap<String, String>> Items = new ArrayList<HashMap<String, String>>();
DatabaseHandler1 db= new DatabaseHandler1(getActivity().getBaseContext());
List<Customer1> labels = db.getAllDatas();
for (Customer1
val : labels) {
// Writing values to map
HashMap<String, String> map = new HashMap<String, String>();
map.put("name", val.getNo());
map.put("price",val.getPrice());
map.put("type", val.getType());
Items.add(map);
}
// Adding Items to ListView
final ListAdapter adapter = new SimpleAdapter(getActivity(), Items,
R.layout.single_nodif,new String[]{ "name","price","type" },
new int[] {R.id.txt_1,R.id.txt_2,R.id.txt_3});
list.setAdapter(adapter);}}
最佳答案
尝试这种方式,希望这能帮助您解决问题。
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(getActivity(),YourSecond.class);
intent.putExtra("ID",labels.get(position).getId());
startActivity(intent);
}
});
二等舱如何获取 Intent 值
String id = getIntent().getStringExtra("ID");
注意:请将此“labels”变量声明为 OnCreateView() 外部,然后您可以在列表中访问项目点击监听器。
关于java - 如何在 ListView 中传递所选行的 id 并在另一个 Activity 中获取行的值,值存储在 sqlite 数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24488922/