如何在Android中创建自定义小部件?

时间:2015-03-14 02:13:31

标签: android android-layout

我对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/

1 个答案:

答案 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