java - 如何在 ListView 中传递所选行的 id 并在另一个 Activity 中获取行的值,值存储在 sqlite 数据库中

标签 java android sqlite listview android-fragments

我有一个使用 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/

相关文章:

java - 从 ClientHandler 中删除用户时出错

java - Google 集合框架中最常用的类是什么?

java - 如何为数组中的每个对象创建一个数组?

android - 使用 Android Monkey 进行测试.. 停留在首选项屏幕上?

java - 如何定义 Recycler.Adapter<VH extends RecylerView.ViewHolder> 的子类

python - 带有参数的python sqlite3 cursor.execute()导致语法错误? (paramstyle qmark)

Java:为什么我的程序只运行 9 次而不是 1000 次(for 和 while 循环)?

java - MessageDigest.update(byte[]) 是做什么的?

c# - .net core 1.0.0 与 Entity Framework 核心 sqlite

sqlite - phonegap sqlite插件错误