0

、、などの複数のデータを1行にまとめListViewて表示するアダプターを作成したかったのです。フォーラムにコメントを表示するようなものです。私は4つの配列を持っており、各配列はこれらの値(、、、および)の1つを格納します。以下のコードを使用して、このためのカスタムアダプターを作成してみました。しかし、私はこれを実装する正しい方法を本当に知りません。これを実行してみましたが、表示されただけです。このコードが正しい実装方法であるかどうかはわかりません。UsernameCommentDateRatingUsernameCommentDateRatingUsernameDate

Float f = Float.parseFloat(commentRating[position]);
holder.cmtRating.setRating(f);

Content.java

list = (ListView) findViewById(R.id.commentlist);
adapter=new CommentAdapter(ContentScreen.this);
list.setAdapter(adapter);

public class CommentAdapter extends BaseAdapter {

    private Activity activity;
    private LayoutInflater inflater=null;

    public CommentAdapter(Activity a) {
        activity = a;
        inflater = (LayoutInflater) activity.getSystemService(
                Context.LAYOUT_INFLATER_SERVICE);
    }

    public int getCount() {
        return commentText.length;
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    public class ViewHolder{
        public TextView cmtUser;
        public TextView cmtText;
        public RatingBar cmtRating;
        public TextView cmtTime;
        public ImageView image;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        View vi = convertView;
        ViewHolder holder;
        if (convertView == null) {
            vi = inflater.inflate(R.layout.comment, null);
            holder = new ViewHolder();
            holder.cmtUser = (TextView) vi.findViewById(R.id.commentby);
            holder.cmtText = (TextView) vi.findViewById(R.id.comment);
            holder.cmtRating = (RatingBar) vi.findViewById(R.id.commentrating);
            holder.cmtTime = (TextView) vi.findViewById(R.id.commentcreatedby);
            vi.setTag(holder);
        } else
            holder=(ViewHolder)vi.getTag();

        holder.cmtUser.setText(commentBy[position]);
        holder.cmtText.setText(commentText[position]);
        Float f = Float.parseFloat(commentRating[position]);
        holder.cmtRating.setRating(f);
        holder.cmtTime.setText(commentCreatedTime[position]);
        return vi;
    }
}

任意の回答とコメントをいただければ幸いです。

編集

comment.xml

<TextView
    android:id="@+id/comment"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/commentcreatedby"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/commentby"
    android:paddingLeft="5dp"
    android:paddingTop="5dp"/>

<TextView
    android:id="@+id/commentcreatedby"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:paddingRight="5dp"
    android:paddingTop="5dp"/>

<TextView
    android:id="@+id/commentby"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:paddingLeft="5dp"
    android:paddingTop="5dp" />

<RatingBar
    android:id="@+id/commentrating"
    style="?android:attr/ratingBarStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/comment"
    android:layout_alignParentRight="true"
    android:layout_marginRight="16dp" />

content.xml

<include
    android:id="@+id/top_header"
    android:layout_width="match_parent"
    layout="@layout/header" />

<TextView
    android:id="@+id/content_desc"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/top_header"
    android:padding="10dip"/>

<ImageView
    android:id="@+id/content_image"
    android:layout_width="fill_parent"
    android:layout_height="160dip"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/content_desc"
    android:padding="10dip" />


<ListView
    android:id="@+id/commentlist"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/content_price" >

</ListView>

<TextView
    android:id="@+id/content_price"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/content_image"
    android:layout_marginLeft="29dp"
    android:layout_marginTop="44dp"
    android:padding="10dip"
    android:textSize="20dp" />

<Button
    android:id="@+id/content_subscribe"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/commentlist"
    android:layout_alignParentRight="true"
    android:layout_marginRight="38dp"
    android:padding="20dip"
    android:paddingRight="20dip"
    android:text="Subscribe" />

アップデート

評価も機能しています。しかし、それは日付と一緒に積み重ねられました。コメントに関しては、私はまだそれを機能させることができません。

更新(解決済み) どうやらそれは私のcomment.xmlアレンジメントが何らかの問題を抱えていることです。再配置すると、コメントが表示され、すべて正常に動作します。みなさん、ありがとうございました。

4

1 に答える 1

0

これが発生する理由は 2 つあります。

  1. 最後の 2 つの配列がデータで満たされていないか、空のデータで満たされているため、それらが表示されません。(配列内の null の場所にアクセスしようとすると null ポインター例外が発生する可能性が低いため)

  2. 行レイアウトには、最後の 2 つのデータ パラメータが表示されません。(私はこの理由で、行レイアウト XML を表示して確認できるようにします)

メソッドにデータを設定する前に、すべての行の 4 つの配列からのすべてのデータを確認してログに出力しますgetView

于 2013-03-08T00:56:56.527 に答える