2016-01-06 2 views
-1

[Изменено] Что-то вроде этого .. при нажатии на пункт метки добавляются с запятой, если есть пункт больше, чем два [и при повторном нажатии удаляет запись этикетки с запятой это то, что ив сделано до сих пор Примечание SeatP является TextView и seat_n выбран ярлык элемента из спискаКак добавить метку элемента при нажатии и удалить его при повторном нажатии разделителем элементов (,)?

List<Seats> seatsList; 
GridView myGrid; 
MyGridAdapter adapter; 
TextView seatlabel,pricelabel; 
ImageView im; 
String st,seat_n,seatp; 

myGrid = (GridView) findViewById (R.id.grid);

seatlabel = (TextView) findViewById(R.id.labelSeat); 
    pricelabel = (TextView) findViewById(R.id.labelPrice); 

общественного недействительный updateMessage() {

adapter = new MyGridAdapter(getApplicationContext(),R.layout.seat_item,seatsList); 
    myGrid.setAdapter(adapter); 
    myGrid.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

      st = seatsList.get(position).getStatus(); 
      seat_n = seatsList.get(position).getSeat_no(); 
      p = seatsList.get(position).getPrice(); 
      Log.d("price: ", p + ""); 

      //Log.d("status: ", seat_n + ""); 
      im = (ImageView) view.findViewById(R.id.seat1); 

      if (st.equalsIgnoreCase("available")) { 

       im.setImageResource(R.drawable.seat); 
       myStatus = true; 
       seatsList.get(position).setStatus("select"); 
       Log.d("status 1: ",myStatus+""); 
       if (seatp.length()>1){ 
        seatp = seatp+"," + seat_n; 
       }else { 
        seatp = seatp+ seat_n; 
       } 
       pr = pr+p; 

       seatlabel.setText(seatp.trim()); 
       pricelabel.setText(Integer.toString(pr)); 

      } 
      if(st.equalsIgnoreCase("select")) { 
       // Toast.makeText(getApplicationContext(), "seat: " + seatsList.get(position).getStatus(), Toast.LENGTH_SHORT).show(); 

       im.setImageResource(R.drawable.seat_avv); 
       seatsList.get(position).setStatus("available"); 
       pr = pr-p; 
       pricelabel.setText(Integer.toString(pr)); 
       seatp= seatlabel.getText().toString(); 
       //Log.d("seatlabel: ",ab); 
       //seatp= seatp.replace(seat_n, ""); 
       if(seatp.length()>=5){ 
        seatp= seatp.replace(","+seat_n, ""); 
       }else { 
        seatp= seatp.replace(seat_n+",", ""); 
       } 
       Log.d("seatp Length: ",seatp.length()+""); 
       /*if(seatp.length()>2){ 
        seatp= seatp.replace(", "+seat_n, ""); 
        Log.d("seatp Length2: ",seatp.length()+""); 
       }else{ 
        seatp= seatp.replace(seat_n+", ", ""); 
        Log.d("Deleting: ",seat_n+""); 
        seatp = ""; 
       }*/ 
       Log.d("seatabzz: ",seatp); 
       seatlabel.setText(seatp.trim()); 
      } 
     } 
    }); 

} 

Здесь логика хороша для 2 или более пунктов Но не работала для первого элемента

ответ

0

если я вас понимаю хорошо, вы можете использовать ArrayList позвонить по телефону addOrRemoveItem() при нажатии на ярлык, прокрутив текст, который вы хотите добавить , и когда save или next или что угодно нажал на звонок getAsCommaSeparator()

ArrayList<String> items = new ArrayList<>(); 

public void addOrRemoveItem(String item){ 
    if(items.contains(item)){ 
     items.remove(item); 
    }else{ 
     items.add(item); 
    } 
} 

public String getAsCommaSeparator(){ 
    return android.text.TextUtils.join(",",items); 
} 
Смежные вопросы