Android 单击列表打开作业详细信息

Android 单击列表打开作业详细信息,android,listview,Android,Listview,我制作了一个应用程序,其中有一个包含作业代码和类别的列表视图。现在我想做的是,当用户单击某个特定列表项时,应该显示作业的完整描述。但我不知道该怎么做 自定义适配器.Java public class SearchJobsCustomList extends BaseAdapter implements View.OnClickListener { Context c; ArrayList<HashMap<String, String>> data;

我制作了一个应用程序,其中有一个包含作业代码和类别的列表视图。现在我想做的是,当用户单击某个特定列表项时,应该显示作业的完整描述。但我不知道该怎么做

自定义适配器.Java

public class SearchJobsCustomList extends BaseAdapter implements View.OnClickListener {
    Context c;
    ArrayList<HashMap<String, String>> data;

    HashMap<String, String> resultp = new HashMap<String, String> ();
//    ArrayList<SearchValues> values;
//    SearchValues a;

    public SearchJobsCustomList(Context c, ArrayList<HashMap<String, String>> data) {
        super ();
        this.c = c;
        this.data = data;


    }

    @Override
    public int getCount() {
        return data.size ();
    }

    @Override
    public Object getItem(int i) {
        return null;
    }

    @Override
    public long getItemId(int i) {
        return 0;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {


        if (view == null) {
            view = LayoutInflater.from (c).inflate (R.layout.custom_search_jobs_lists, viewGroup, false);
            resultp = data.get (i);
            TextView JobCode = (TextView) view.findViewById (R.id.tv_job_code);
            TextView Category = (TextView) view.findViewById (R.id.tv_category);
            TextView ExpYrs = (TextView) view.findViewById (R.id.tv_exp_yrs);
            TextView ExpMnths = (TextView) view.findViewById (R.id.tv_exp_mnths);
            TextView Date = (TextView) view.findViewById (R.id.tv_date);
            Button bestCandidate = (Button) view.findViewById (R.id.bt_best_candidates);
            Button appliedJobs = (Button) view.findViewById (R.id.bt_applied_jobs);

            if (resultp.get ("counts").equals (0)) {
                bestCandidate.setFocusable (false);
                bestCandidate.setText (0);

            } else {
                bestCandidate.setText (resultp.get ("counts"));
            }

            if (resultp.get ("applied").equals (0)) {
                appliedJobs.setFocusable (false);
                appliedJobs.setText (0);

            } else {
                appliedJobs.setText (resultp.get ("applied"));
            }


            JobCode.setText (resultp.get ("code"));
            Category.setText (resultp.get ("category"));
            ExpYrs.setText (resultp.get ("minExp"));
            ExpMnths.setText (resultp.get ("maxExp"));
            Date.setText (resultp.get ("postedOn"));

            view.setOnClickListener (this);


        }
        return view;
    }
SearchJobList.Java

public class SearchJobsList extends Activity implements AdapterView.OnItemClickListener {


    private ListView lvresources;
    private Context c = this;
    SearchJobsCustomList searchJobsCustomList;


    @SuppressLint("NewApi")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate (savedInstanceState);
        getWindow ().requestFeature (Window.FEATURE_ACTION_BAR);
        getActionBar ().hide ();
        setContentView (R.layout.search_job_lists);
        initialize ();

    }


    private void initialize() {

        lvresources = (ListView) findViewById (R.id.listView);
        searchJobsCustomList = new SearchJobsCustomList (c, SearchJobs.arraylist);

        lvresources.setAdapter (searchJobsCustomList);
        lvresources.setOnItemClickListener (this);
    }

    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {



    value = data.get (i);
    Intent intent = new Intent (c, JobsDescription.class);
    intent.putExtra ("code", value.get ("code"));
    intent.putExtra ("category", value.get ("category"));
    intent.putExtra ("position", value.get ("position"));
    intent.putExtra ("desc", value.get ("desc"));
    intent.putExtra ("type", value.get ("type"));
    intent.putExtra ("hours", value.get ("hours"));
    intent.putExtra ("status", value.get ("status"));
    intent.putExtra ("expiryDate", value.get ("expiryDate"));
    intent.putExtra ("address", value.get ("address"));
    intent.putExtra ("state", value.get ("state"));
    intent.putExtra ("country", value.get ("country"));
    intent.putExtra ("city", value.get ("city"));
    intent.putExtra ("gender", value.get ("gender"));
    intent.putExtra ("religion", value.get ("religion"));
    intent.putExtra ("summary", value.get ("summary"));
    startActivity (intent);
    }
}

arraylist包含所有工作详细信息。

您是想在同一列表中还是在新活动中显示完整的工作描述

新活动: 您正在使用resultp=data.geti获取数据。在适配器中。onItemClick您可以使用intent.putExtramyJobID,i将作业的列表位置添加到intent,您可以在使用启动作业详细信息活动时收到它。然后你可以用它来搜索完整的工作描述,就像你在这里搜索工作细节一样。或者,如果职务描述只是一个字符串,则只能传递该字符串。代码的上下文将决定什么更合适

同一名单:
您可以更新列表项的值,如下所示。将此代码放入onItemClick{}块。

@Umar Saad我正在使用不同的活动。请参阅,我编辑了代码,但列表未被单击。请在初始化函数中设置OnClick Listener。lvresources.setonitemclicklistener新建OnItemClickListener{public void onItemClickAdapterView adapterView,View View View,int i,long l{Log.dItem被单击!,Integer.toStringi;}}}};使用LogCat查看是否正在单击该项。nw正在单击该项,但nw i得到的数据大小为0,这是数组。您确定列表中有数据吗?在初始化add Log.dJob list length中,Integer.toStringSearchJobs.arraylist.length;查看问题是与列表有关还是与适配器有关。