如何在列表视图中使用房间 ID 显示房间名称



我尝试在我的安卓应用程序中显示 roomid,但它们没有显示,因为我是初学者。 请编写代码。我在下面向您展示了我的代码,

房间列表活动.java短代码

ArrayList<String> items = new ArrayList<String>();
JSONArray rooms = jsonObject.getJSONArray("rooms");
for (int i = 0; i < rooms.length(); i++) {
JSONObject room = rooms.getJSONObject(i);
String name = room.optString("room");
String roomid = room.optString("roomid"); 
System.out.println("OutPut Name:"+ name.toString());
System.out.println("OutPut roomid:"+ roomid.toString());
items.add(name);  
}     	
ListView listView = (ListView) findViewById(R.id.ChatlistView);
ArrayAdapter<String> mArrayAdapter = new ArrayAdapter<String>(RoomListActivity.this,  
R.layout.room_row,
R.id.room,
items);
listView.setAdapter(mArrayAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
TextView textView = (TextView)view.findViewById(R.id.room);
String message = "You clicked # " + position + ", which is string: " + textView.getText().toString();
Toast.makeText(RoomListActivity.this, message, Toast.LENGTH_LONG).show();
}
});

room_row.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relativelay"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >
    <TextView
        android:id="@+id/room"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/img_room"
        android:layout_toRightOf="@+id/img_room"
        android:layout_toStartOf="@+id/img_room"
        android:gravity="left|center_vertical"
        android:text="Room Name"
        android:textSize="16dp" />
    <ImageView
        android:id="@+id/img_room"
        android:layout_width="45dp"
        android:layout_height="45dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/chat" />
    <TextView
        android:id="@+id/roomid"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/room"
        android:layout_alignParentRight="true"
        android:layout_toRightOf="@+id/img_room"
        android:layout_toStartOf="@+id/img_room"
        android:layout_below="@+id/room"
        android:gravity="left|center_vertical"
        android:text="Room Id" />
    </RelativeLayout>

房间型号.java

public class RoomModel {
	private String name, id, roomid;
	public String getName() {
	    return name;}
public void setName(String name) {
this.name = name;}
public String getId() {
return id;}
public void setId(String id) {
this.id = id;}
public String getroomId() {
return roomid;}
public void setroomId(String roomid) {
this.roomid = roomid;}
}

输出名称: 输出室:原木

03-10 13:35:33.315: I/System.out(726): OutPut Name:.~=cAsiNo-RooM=~.
03-10 13:35:33.325: I/System.out(726): OutPut roomid:room12
03-10 13:35:33.325: I/System.out(726): OutPut Name:.~=MusiC-Masti=~.
03-10 13:35:33.335: I/System.out(726): OutPut roomid:room24

应用程序的快照

尝试使用此适配器:

public class RoomAdapter extends ArrayAdapter<RoomModel>  {
  private final String TAG = RoomAdapter.class.getSimpleName();
  private final Activity context;
  private List<RoomModel> values;
  public RoomAdapter(Activity context, List<RoomModel> values) {
    super(context, android.R.layout.room_row.xml, values);
    this.context = context;
    this.values = values;
  }
  public int getCount() {
    return values.size();
  }
  public String getItem(int position) {
    return values.get(position);
  }
  @Override
  public View getView(final int position, View convertView, ViewGroup parent) {
    ViewHolder viewHolder;
    LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    if (convertView != null) {
        viewHolder = (ViewHolder) convertView.getTag();
    } else {
        convertView = inflater.inflate(android.R.layout.room_row.xml, parent,  false);
        viewHolder = new ViewHolder(convertView);
        convertView.setTag(viewHolder);
         viewHolder.name = (TextView) rowView.findViewById(R.id.room);
         viewHolder.image = (ImageView) rowView.findViewById(R.id.img_room);
    }
    viewHolder.name.setText(getItem(position).getName());
  // dependencies { compile 'com.github.bumptech.glide:glide:3.7.0' }
 Glide.with(context)
            .load( "URL_PICTURE"))
            .placeholder(R.drawable.chat)
            .error(R.drawable.chat)
            .diskCacheStrategy(DiskCacheStrategy.ALL)
            .into(viewHolder.image);

    return convertView;
}
 static class ViewHolder {
   TextView name ;
    ImageView image;
 }
}

改变:

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

自:

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

  items.add(name);  

自:

 items.add(new RoomModel(roomid, name));  

并尝试这个:

ListView listView = (ListView) findViewById(R.id.ChatlistView);
RoomAdapter mArrayAdapter = new RoomAdapter(context,items)
listView.setAdapter(mArrayAdapter);

将此构造函数添加到您的类 房间模型 :

public RoomModel(String roomid, String name) 
{ 
   this.roomid = roomid; 
   this.name = name;
}

在你的代码中

items.add(name); 

在这里,您仅将名称添加到arraylist中,因此您只会获得listView中的名称。要获取房间名称,房间ID使房间模型类arraylist

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

并将这些对象添加到列表中

items.add(room1);

最新更新