2016-03-17 3 views
-3

Я пытаюсь отобразить два текстовых изображения в одном списке. Но я не могу одновременно отображать два адаптера. И я пытаюсь изменить значения textview во время выполнения. Он получает значение обновления из диалогового окна. Это работает, но не отображать два адаптера в коде time.My являетсяКак добавить два адаптера в один список

public class MainActivity extends ListActivity { 
ArrayList<String> arrayList,a1; 
ArrayAdapter<String> arrayAdapter,a2; 
RatingBar r1,r2,r3,r4,r5; 
TextView t; 
Float beh,b,f; 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ListView listView=(ListView) findViewById(R.id.list); 
    String[] items={"Apple","Banana","Coconut","Grape","Peach","Pear"}; 
    String[] i={"0","0","0","0","0","0"}; 
    a1=new ArrayList<>(Arrays.asList(i)); 
    arrayList=new ArrayList<>(Arrays.asList(items)); 
    arrayAdapter=new ArrayAdapter<String>(this, R.layout.layout, R.id.textView,arrayList); 
    a2=new ArrayAdapter<String>(this, R.layout.layout, R.id.textView2,a1); 
    listView.setAdapter(a2); 
    listView.setAdapter(arrayAdapter); 

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      // Show input box 
      showInputBox(a1.get(position),position); 
     } 
    }); 

    } 
    public void showInputBox(String oldItem, final int index){ 
    final Dialog dialog=new Dialog(MainActivity.this); 
    dialog.setContentView(R.layout.layout_dialog); 
    dialog.setTitle("School details"); 
    r1 = (RatingBar)dialog.findViewById(R.id.ratingBar); 
    r2 = (RatingBar)dialog.findViewById(R.id.ratingBar2); 

    Button s=(Button)dialog.findViewById(R.id.button); 
    s.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      f = (beh + b)/2; 
      a1.set(index, f.toString()); 
      a2.notifyDataSetChanged(); 
      dialog.dismiss(); 
     } 
    }); 
    dialog.show(); 

    r1.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() { 
     public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) { 

      beh = rating; 
      //String beh = Float.toString(rating); 

      Toast.makeText(getApplicationContext(), beh.toString(), Toast.LENGTH_SHORT).show(); 

     } 
     }); 
     r2.setOnRatingBarChangeListener(new  RatingBar.OnRatingBarChangeListener() { 
     public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) { 

      b = rating; 
      //String b = Float.toString(rating); 

      Toast.makeText(getApplicationContext(), b.toString(), Toast.LENGTH_SHORT).show(); 

     } 
    }); 
    } 

} 

ответ

1

С помощью пользовательского адаптера я могу использовать два TextView обрабатываются во время выполнения в ListView. Я решил эту проблему с этим кодом

 private AdapterView.OnItemClickListener onItemClickListener() { 
     return new AdapterView.OnItemClickListener() { 
     @SuppressLint("SetTextI18n") 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      final Dialog dialog = new Dialog(student_login.this); 
      dialog.setContentView(R.layout.layout_dialog); 
      int layout=R.layout.item_listview; 



      final School staf = (School) parent.getAdapter().getItem(position); 
      final String stname = staf.getName().toString(); 
      String scname = staf.getSchool(); 
      final String poid=staf.getObjid(); 
      final String pb = staf.getBehaviour(); 
      final String pk = staf.getKnowledge(); 
      final String pp= staf.getPresentation(); 
      final String pe=staf.getExplanation(); 
      final String ppu = staf.getPunctuality(); 
      final String c = staf.getCoun(); 

      Toast.makeText(getApplicationContext(), poid, Toast.LENGTH_SHORT).show(); 

      dialog.setTitle(scname + "-" + stname); 

      dialog.show(); 

      r1 = (RatingBar)dialog.findViewById(R.id.ratingBar); 
      r2 = (RatingBar) dialog.findViewById(R.id.ratingBar2); 
      r3 = (RatingBar) dialog.findViewById(R.id.ratingBar3); 
      r4 = (RatingBar) dialog.findViewById(R.id.ratingBar4); 
      r5 = (RatingBar) dialog.findViewById(R.id.ratingBar5); 
      Button sav= (Button)dialog.findViewById(R.id.button); 

      sav.setTag(position); 



      r1.setOnRatingBarChangeListener(new    RatingBar.OnRatingBarChangeListener() { 
       public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) { 

        beh = rating; 

        // Toast.makeText(getApplicationContext(), beh, Toast.LENGTH_SHORT).show(); 

       } 
      }); 
      r2.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() { 
       public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) { 

        k=rating; 

        // Toast.makeText(getApplicationContext(), k, Toast.LENGTH_SHORT).show(); 

       } 
      }); 


      sav .setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        String position =v.getTag().toString(); 
        int po=Integer.parseInt(position); 
        f=(beh+k+p+e+pu)/5; 
        String sf=String.valueOf(f); 

        View view = listView.getChildAt(po); 
        TextView someText = ((TextView) view.findViewById(R.id.textView6)); 
        someText.setText(f.toString()); 

        String tsf=staf.getCrate(); 
        Toast.makeText(getApplicationContext(), tsf, Toast.LENGTH_SHORT).show(); 



        dialog.dismiss(); 

       } 
      }); 


     } 
    }; 
} 
2

Простой ответ .. вы не можете

вам необходимо либо два индивидуальный список соперничает. Или внутри адаптера, работайте с двумя отдельными списками, чтобы получить нужный результат.

Не может помочь намного больше, не зная больше о том, чего вы хотите достичь.

Редактировать: Чтобы добавить больше текстовых просмотров и т. Д. В каждую строку, вам понадобится пользовательский адаптер. Вот хороший учебник - http://www.vogella.com/tutorials/AndroidListView/article.html#adapterown

+0

я постараюсь дать оценку для представленного элемента списка в диалоговом окне и сохраните рейтинг в другую TextView в ListView. Диалоговое окно содержит две рейтинговые бары и кнопку. –

+0

обновил мой ответ –

+0

Благодарим за помощь. –

Смежные вопросы