如何填充ListView和List onclick数据?

时间:2014-12-08 19:42:32

标签: android listview

我有一个包含用户及其数据的数据库。 然后用他们的名字制作ListView。 然后如何将Click侦听器设置为ListView与我的List相关联? 因此,当我单击List元素strats new Activity并包含所有用户详细信息时,不仅仅是名称?

package com.test.tabs;

import java.util.ArrayList;
import java.util.List;
import com.test.tabs.R;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class SelectFragment extends Fragment {

    private ListView listView;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_select, container, false);
        return rootView;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {

        super.onActivityCreated(savedInstanceState);
        MySQLiteOpenHelper db = new MySQLiteOpenHelper(getActivity());
        List<User> users = db.getAllUsers();

        List<String> your_array_list2 = new ArrayList<String>();

        for (int i = 0; i < users.size(); i++) {

            your_array_list2.add(users.get(i).getFirstName());
        }
        listView = (ListView) getActivity().findViewById(R.id.listView);

        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1,your_array_list2);
        listView.setAdapter(arrayAdapter);

        listView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {}
        });
    }
}

3 个答案:

答案 0 :(得分:2)

您需要在User类中实现parcelable:

public class User implements Parcelable
{
....
}

现在您可以将用户附加/发送到下一个活动,如下所示:

listView.setOnItemClickListener(new OnItemClickListener() 
{
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
    {
         User user = adapter.getItem(position);
         Bundle b = new Bundle();
         b.putParcelable("user", user);

         Intent i = new Intent(context, OtherActivity.class);
         i.putExtra("bundle", b);
         startActivity(i);
    }
});

在新的活动电话中:

Bundle b = getIntent().getBundleExtra("bundle");
User user = b.getParcelable("user");

答案 1 :(得分:0)

使用ListView#setOnItemClickListener(AdapterView.OnItemClickListener listener)

答案 2 :(得分:0)

在我看来,您应该使用Cursor Adpater从数据库填充listview。在每行的项目点击事件中,您可以获得相应的光标对象,将一些细节传递给下一个活动,这样它可以获取更多用户详细信息并显示给用户。

您首先需要了解基础知识。请查看this教程以获得一些想法。

祝你好运!