我对Android编程完全陌生,所以我不确定我应该搜索什么。我的一项活动中有一个LinearLayout元素。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:id="@+id/comment_area"
android:orientation="vertical"/>
我有一个JSON数组的注释(userName,commentText,commentDate),我想通过循环添加到这个LinearLayout中。我创建了一个comment_view.xml布局并创建了一个扩展LinearLayout的CommentWidget类。坦率地说,我不知道这是否是正确的方法,我不认为这是因为我无法加载评论。
我的班级是
public class CommentWidget extends LinearLayout {
private String text;
public void setText(String text) {
this.text = text;
}
public CommentWidget(Context context){
super(context);
}
public CommentWidget(Context context,AttributeSet attrs){
super(context,attrs);
}
@Override
protected void onFinishInflate(){
super.onFinishInflate();
TextView textView=(TextView) findViewById(R.id.comment_text);
textView.setText(text);
}
}
我的小部件布局是
<?xml version="1.0" encoding="utf-8"?>
<com.myproject.CommentWidget xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/comment_text"/>
</com.myproject.CommentWidget>
在我正在调用的活动的循环中:
CommentWidget w = new CommentWidget(this);
w.setText(comment.getText());
mtxtArea.addView(w);
但没有出现。有人能指出我正确的方向吗?我已经正确地将JSON接收到数组中了。
更新:回答 Windsurfer的回答让我在正确的轨道上使用ListView来实现我想要完成的任务。使用他的链接和一些搜索,我发现扩展ArrayAdapter最适合JSON类型的数据。我最后在以下链接中学习了教程
https://devtut.wordpress.com/2011/06/09/custom-arrayadapter-for-a-listview-android/
答案 0 :(得分:1)
你可以很好地扩展LinearLayout来做到这一点,但Android已经有一些为此设计的小部件。我相信你正在寻找一个ListView来显示一个数据数组。而不是创建一个新的小部件,看看ListView的工作原理。 ListView使用适配器将数据绑定到它。您仍然需要为单个注释项设计布局,但很多繁重工作都是由ListView及其适配器完成的。
以下是一些可以帮助您入门的链接:
http://developer.android.com/guide/topics/ui/layout/listview.html http://www.vogella.com/tutorials/AndroidListView/article.html
看看引入ListViews的Romain Guy的this link。