如何在 ListView 中使用 roomid 显示房间名称

Posted

技术标签:

【中文标题】如何在 ListView 中使用 roomid 显示房间名称【英文标题】:How to Show room name With roomid In ListView 【发布时间】:2016-06-25 01:26:30 【问题描述】:

我尝试在我的 android 应用程序中显示 roomid,但由于我是初学者,所以它们没有显示。请写代码。我在下面向你展示了我的代码,

RoomListActivity.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_
    android:layout_
    android:orientation="vertical" >
    <TextView
        android:id="@+id/room"
        android:layout_
        android:layout_
        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_
        android:layout_
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/chat" />
    <TextView
        android:id="@+id/roomid"
        android:layout_
        android:layout_
        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>

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

SnapShot Of App

【问题讨论】:

请告诉我如何在我的应用中显示 roomid。 【参考方案1】:

试试这个适配器:

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);

在你的类 RoomModel 中添加这个构造函数:

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

【讨论】:

你的意思是 roomid items.add(roomid); ?如何在 RoomListActivity 中包含活动“RoomAdapter,java” items.add(new RoomModel(roomid, name));代码给我错误“描述资源路径位置类型构造函数 RoomModel(String, String) 未定义 RoomListActivity.java /wap2mob/src/com/android/wap2mo 第 113 行 Java 问题” 在你的类 RoomModel 中添加这个构造函数: public RoomModel(String roomid, String name) this.房间=房间;这。名字=名字; 【参考方案2】:

在你的代码中

items.add(name); 

这里您只在arraylist 中添加名称,因此您在listView 中只获得名称。要获取房间名称,roomId 使 arraylist 的 Roommodel 类

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

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

items.add(room1);

【讨论】:

你的意思是 roomid items.add(roomid); ?如何在 RoomListActivity 中包含活动“RoomAdapter,java” RoomAdapter mArrayAdapter = new RoomAdapter(context,items); “描述资源路径位置类型上下文无法解析为变量 RoomListActivity.java /wap2mob/src/com/android/wap2mob 第 120 行 Java 问题” 谢谢,我修复了所有错误。我今天面临最后 2 个错误,解决了所有错误。谢谢谢谢你是伟人。

以上是关于如何在 ListView 中使用 roomid 显示房间名称的主要内容,如果未能解决你的问题,请参考以下文章

水平 StackLayout 中的 ListView - Nativescript Vue

腾讯云使用liveRoom开启直播时,报“房间已存在”错误?

Java EE Websockets

GraphQL 订阅特定房间的(按 roomId)设置更改

ListBox 和 ListView 有啥区别

android 一个listview中有多个布局切换