Android - 是否可以隐藏ListView中的某些值并单击列表以显示所有值?

时间:2016-05-20 07:24:10

标签: android json listview

我正在使用Web服务并将JSON响应存储在arraylist中。我在android中的List视图中显示arraylist。我关注的是,我只想在listview中显示我的工作ID和工作状态,在onclick事件期间我需要显示所有数据,如工作ID,工作名称,工作状态等。

目前所有细节都显示在列表视图中。我需要在那里隐藏某些值。

我尝试删除适配器部件中不需要的字段。但在这样做时,我无法在onclick事件中检索它们。

请帮忙。

ListAdapter adapter = new SimpleAdapter(
                        JobMain.this, jobList,
                        R.layout.detail_list, new String[] {"number","name","member","desc","status" }, new int[] { R.id.textView2,
                                R.id.textView4, R.id.textView6,R.id.textView8,R.id.textView10});
                setListAdapter(adapter);

                ListView lv = getListView();
                lv.setBackgroundResource(R.drawable.background);
                lv.setOnItemClickListener(new OnItemClickListener() {
                  public void onItemClick(AdapterView<?> parent, View view,
                      int position, long id) {


                      String reqno = ((TextView) view.findViewById(R.id.textView2))
                              .getText().toString();
                      String name = ((TextView) view.findViewById(R.id.textView4))
                              .getText().toString();
                      String member = ((TextView) view.findViewById(R.id.textView6))
                              .getText().toString();
                      String description = ((TextView) view.findViewById(R.id.textView8))
                              .getText().toString();
                      String status = ((TextView) view.findViewById(R.id.textView10))
                              .getText().toString();

2 个答案:

答案 0 :(得分:0)

您为ListView.setAdapter(适配器)提供一个ArrayList。 .setOnItemClicklistener()具有位置值。用它来从ArrayList获取你想要的对象到下一个动作......

object you_want = ArrayList.get(position);

*您可能想要创建自己的ArrayAdapter。

答案 1 :(得分:0)

是的,这是可能的。 你可以通过在视图中添加这个属性来隐藏它:

 android:visibility="gone"

OR,

在适配器内部,将相关视图的可见性设置为消失

无论哪种方式,在listview的onItemClick()内,将visiblity设置为可见,以便在单击项目时显示

像这样:

隐藏XML

 <!--You can choose to hide it here by setting visibility
to gone in xml like this-->
<EditText
        android:id="@+id/edit"
        android:inputType="text"
        android:enabled="true"
        android:visibility="gone"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

您的适配器内的代码getView()

 @Override
public View getView(final int position, View convertView, ViewGroup parent) {

    Holder holder;
    if (convertView==null)
    {
        holder=new Holder();
        convertView=LayoutInflater.from(context).inflate(R.layout.item,parent,false);
        holder.editText=(EditText)convertView.findViewById(R.id.edit);
        convertView.setTag(holder);
    }
    else {holder=(Holder)convertView.getTag();}

    //hide the views like this
    holder.editText.setVisibility(View.GONE);

    holder.editText.setEnabled(true);
    holder.editText.setHint("type");

然后点击后显示

在你的getView()中,将onCLickListener添加到你要返回的视图中:

 convertView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            //make the view visible when the item is clicked
            holder.editText.setVisibility(View.VISIBLE);
        }
    });

    return convertView;
}