如何在 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