2016-11-10 23 views
0

我有一个列表视图,通过点击列表视图中的项目,我会得到另一个子列表视图。我如何可以通过点击子项获得父列表视图中的位置我怎样才能通过点击子列表项目调用父列表项目

主要活动:

public boolean onItemLongClick(AdapterView parent, View view, int position, long id) { 
    newListitems2.clear(); 

    newListitems2.addAll(itemsList1); 

    dialog = new Dialog(PendingOrdersActitvity.this); 
    dialog.setContentView(R.layout.itembumping); 
    dialog.show(); 

    listView1.setTag(position); 
    list1 = (ListView) dialog.findViewById(R.id.list1); 

    ItemBumpingAdapter adapter2 = new ItemBumpingAdapter(PendingOrdersActitvity.this, newListitems2); 
    list1.setAdapter(adapter2); 

    Button okButton = (Button) dialog.findViewById(R.id.ok1); 
    okButton.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      dialog.dismiss(); 
     } 
    }); 
    Button cancelButton = (Button) dialog.findViewById(R.id.Cancel1); 
    cancelButton.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      dialog.dismiss(); 
     } 
    }); 
    return false; 
} 

父列表:

public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub 

    ViewHolder holder; 
    String item = null, qty = null; 
    if (convertView == null) { 
     holder = new ViewHolder(); 
     convertView = inflator.inflate(R.layout.itembumpingadapter, null); 
     holder.qty = (TextView) convertView.findViewById(R.id.qty); 
     holder.name = (TextView) convertView.findViewById(R.id.item); 
     holder.childText = (TextView) convertView 
       .findViewById(R.id.childitem); 
     holder.qtyChild = (TextView) convertView 
       .findViewById(R.id.qtychild); 
     holder.checkbox = (CheckBox) convertView.findViewById(R.id.chckbox1); 
     convertView.setTag(holder); 

    } else { 

     holder = (ViewHolder) convertView.getTag(); 
    } 
    parentobjid = newListitems.get(position).getParentobjectid(); 
    if (!parentobjid.isEmpty()) { 
     holder.name.setText(" " + newListitems.get(position).getItemnNameDisplay()); 
     holder.name.setTextColor(Color.parseColor("#CC0000")); 
     holder.qty.setText("  " + String.valueOf(newListitems.get(position) 
       .getQuantityDisplay())); 
     holder.qty.setTextColor(Color.parseColor("#CC0000")); 
    } else { 
     holder.name.setText(newListitems.get(position).getItemnNameDisplay()); 
     holder.qty.setText(String.valueOf(newListitems.get(position).getQuantityDisplay())); 
     holder.name.setTextColor(Color.parseColor("#FFFFFF")); 
    } 

    return convertView; 
} 

儿童ListAdapter:

if (convertView == null) { 

     holder = new ViewHolder(); 
     convertView = inflator.inflate(R.layout.itembumpingadapter, null); 
     holder.qty = (TextView) convertView.findViewById(R.id.qty); 
     holder.name = (TextView) convertView.findViewById(R.id.item); 
     holder.childText = (TextView) convertView 
       .findViewById(R.id.childitem); 
     holder.qtyChild = (TextView) convertView 
       .findViewById(R.id.qtychild); 
     holder.checkbox = (CheckBox) convertView.findViewById(R.id.chckbox1); 
     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 
    parentobjid = newListitems.get(position).getParentobjectid(); 
    if (!parentobjid.isEmpty()) { 
     holder.name.setText(" " + newListitems.get(position).getItemnNameDisplay()); 
     holder.name.setTextColor(Color.parseColor("#CC0000")); 
     holder.qty.setText(" " + String.valueOf(newListitems.get(position).getQuantityDisplay())); 
     holder.qty.setTextColor(Color.parseColor("#CC0000")); 
    } else { 
     holder.name.setText(newListitems.get(position).getItemnNameDisplay()); 
     holder.qty.setText(String.valueOf(newListitems.get(position).getQuantityDisplay())); 
     holder.name.setTextColor(Color.parseColor("#FFFFFF")); 
     holder.qty.setTextColor(Color.parseColor("#FFFFFF")); 
     holder.checkbox.setChecked(false); 

     holder.checkbox.setTag(position); 
     holder.checkbox.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       int pos = (Integer) v.getTag();//Cast object to integer 
       newListitems.get(pos).setChecked(!newListitems.get(pos).isChecked()); 
      } 
     }); 
     if (newListitems.get(position).isChecked()) { 
      holder.name.setEnabled(true); 
      holder.name.setBackgroundColor(Color.parseColor("#DCDBDB")); 

     } else { 
      holder.name.setEnabled(false); 
     } 
    } 
    return convertView; 
+0

你的意思是可扩展列表视图? –

+0

当我点击列表中的项目时,我现在正在获取同样的列表作为子列表现在我需要通过点击子项目我必须禁用父项目 – mallika

回答

0

创建两个列表对象,如

List<String> list_parent; 
List<String> list_child; 

的父项点击更新list_child并分配给listview Adapter并设置一个flag针对列表视图中显示(如设置flag0如果list_parent分配到适配器和1名儿童)

onBackPressed检查,如果标志是1,那么分配list_parent到适配器,如果标志为0,则finish();

但是请记住,当你分配列表对象适配器调用的每次notifyDataSetChanged

这是很简单的列表视图代码:

public class ListViewAndroidExample extends Activity { 
    ListView listView ; 
    int flag=0;//parent 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_list_view_android_example); 

     // Get ListView object from xml 
     listView = (ListView) findViewById(R.id.list); 

     // Defined Array values to show in ListView 
     String[] values_parent = new String[] { "Android List View", 
             "Adapter implementation", 
             "Simple List View In Android", 
             "Create List View Android", 
             "Android Example", 
             "List View Source Code", 
             "List View Array Adapter", 
             "Android Example List View" 
             }; 

     String[] values_child= new String[] { "Child 1", 
       "Child 2", 
       "Child 3", 
       "Child 4" 
      }; 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, android.R.id.text1, values_parent); 


     // Assign adapter to ListView 
     listView.setAdapter(adapter); 

     // ListView Item Click Listener 
     listView.setOnItemClickListener(new OnItemClickListener() { 

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

       // ListView Clicked item index 
       int itemPosition  = position; 

       if(flag=0) 
       { 
       flag=1; 
       adapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, android.R.id.text1, values_child); 
       } 
       else 
        { 
       flag=0; 
        } 

       } 

     }); 
    } 



@Override 
public void onBackPressed() { 
    // TODO Auto-generated method stub 
    if(flag=0) 
    finish(); 
    else{ 
    adapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, android.R.id.text1, values_parent); 
     } 
} 

} 
+0

你有两个不同的父母和子对象吗? –

+0

我有两个适配器的列表视图,但有相同的数据becoze通过在父母签署项目我想获得相同的列表作为子列表与复选框 – mallika

+0

我保持禁用逻辑,但它是在子列表中工作,而不是在父列表中请帮助我 – mallika

相关问题