#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.