2016-11-10 39 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

相關問題