возможно ли иметь два TextView в элементе ListView?

#android

#Android

Вопрос:

я хотел бы создать ListView, но я хочу, чтобы в каждом listitem было 2 разных TextView и button..is это возможно?

я использую XML-файл row для своих элементов списка..

 public class main extends Activity {
    private ListView lv1;

    private String lv_arr[]={"a","b","c","d"};

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.main); 





        lv1=(ListView)findViewById(R.id.list);



        lv1.setAdapter(new ArrayAdapter<String>(this,R.layout.row , lv_arr));


        lv1.setOnItemClickListener(new OnItemClickListener() {
             public void onItemClick(AdapterView<?> parent, View view,
                      int position, long id) {
                    switch( position )
                    {
                       case 0:  Intent newActivity = new Intent(chania.this, cafe.class);     

                        break;


                      //...........


                    }
                }
          });

    }
}
  

Ответ №1:

Да, просто оберните их в макет, например LinearLayout .

Вот пример — посмотрите на расположение строк.

Комментарии:

1. как вы можете видеть в коде, я использую строку с именами каждого элемента списка … если я хочу иметь две строки в каждом элементе списка, у меня должно быть 2 строки, или я вообще не мог бы использовать string?

2. Используйте SimpleAdapter или создайте свой собственный, расширив ListAdapter

Ответ №2:

Создайте свой собственный пользовательский адаптер, который расширяет базовый адаптер. Попробуйте приведенный ниже код (я использовал 7 textview, завернутый в настроенный XML-файл макета):

 public class Received_invitationAdapter extends BaseAdapter{
Context ctx_invitation;

public Received_invitationAdapter(Context ctx_invitation)
{
    super();
    this.ctx_invitation = ctx_invitation;
}

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return PartyName.length;
}

@Override
public Object getItem(int position) {
    // TODO Auto-generated method stub
    return PartyName[position];
}

@Override
public long getItemId(int position) {
    // TODO Auto-generated method stub
    return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    View v = null;
    try
    {
        String inflater = Context.LAYOUT_INFLATER_SERVICE;
        LayoutInflater li = (LayoutInflater)ctx_invitation.getSystemService(inflater);
        v = li.inflate(R.layout.receivedinvitations, null);

        TextView tv_partyname = (TextView)v.findViewById(R.id.tv_receivedinvitation_PartyTitle);
        TextView tv_partydate = (TextView)v.findViewById(R.id.tv_receivedinvitation_date);
        TextView tv_partytime = (TextView)v.findViewById(R.id.tv_receivedinvitation_time);
        TextView tv_partylocation = (TextView)v.findViewById(R.id.tv_receivedinvitation_PartyLocation);
        TextView img_chkbox = (TextView)v.findViewById(R.id.img_chkbox_receivedinvitation);
        TextView img_inv_accepted = (TextView)v.findViewById(R.id.img_accept_receivedinvitation);
        TextView img_inv_rejected = (TextView)v.findViewById(R.id.img_reject_receivedinvitation);

        tv_partyname.setText(PartyName[position]);
        tv_partydate.setText(PartyDate[position]);
        tv_partytime.setText(PartyTime[position]);
        tv_partylocation.setText(PartyLocation[position]);
        System.out.println("" img_chkbox.getVisibility());
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
    return v;
}
  

The receivedinvitations.xml файл содержит 7 textview, определенных в методе getview.