私は文字列配列を持っていて、その項目をリストに表示したい。 私はテーブルを含むrow.xmlを持っていて、各行に3つのTextViewがあります。 私がしたいことは、各行に配列の3つのアイテムをそれぞれ示しています。アンドロイド、アレイアダプターを使用している悪いリソース
サンプル:String[] str = {"1", "2", "3", "4", "5", "6"};
各行は次のようにする必要があります:
str[1]----str[2]----str[3]
str[4]----str[5]----str[6]
私のXMLコードは次のとおりです。
のOnCreate()私は(私はいくつかの他のビューとリストビューを持っている)入れで<?xml version="1.0" encoding="utf-8"?>
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:shrinkColumns="*"
android:stretchColumns="*" >
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_marginTop="10dip"
android:layout_marginBottom="10dip" >
<TextView
android:id="@+id/outstanding_contractdate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:textSize="15sp" />
<TextView
android:id="@+id/outstanding_contractno"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:textSize="15sp" />
<TextView
android:id="@+id/outstanding_contractamount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:textColor="#ffffff"
android:textSize="15sp" />
</TableRow>
</TableLayout>
:
lvOutstanding = (ListView) findViewById(R.id.outstanding_list);
lvOutstanding.setAdapter(new MyListAdapter());
これは私のアダプタです:
class MyListAdapter extends ArrayAdapter<String>{
MyListAdapter(){
super(MSOutStanding.this, R.layout.list_outstanding, tokens);
}
public View getView(int position, View convertView, ViewGroup parent){
View row = convertView;
//String str = llData.get(position);
//String[] tokens = str.split(",");
if(row == null){
LayoutInflater inflater = getLayoutInflater();
row = inflater.inflate(R.layout.list_outstanding, parent, false);
}
TextView tvContDate = (TextView) row.findViewById(R.id.outstanding_contractdate);
TextView tvContNo = (TextView) row.findViewById(R.id.outstanding_contractno);
TextView tvContAmount = (TextView) row.findViewById(R.id.outstanding_contractamount);
tvContDate.setText(tokens[0]);
tvContNo.setText(tokens[1]);
tvContAmount.setText(tokens[2]);
return(row);
}
}
私の最初の問題は、結果がわかりません。 2番目は、私はこの方法で、私のクラス(private static String[] tokens = {"", "", ""};
)の上に文字列配列として "トークン"を定義している、私はアプリケーションを実行すると、それは私に同じ結果で3行を示しています。 しかし、私がPrivate static String[] tokens;
のような定義を変更すると、プログラムがクラッシュします。 ? は、私はそれがどこ私のせいである私に言う
おかげ
私は(位置= 0){数える場合は、のようなものを試してみてくださいだと思う最初の解決のために= 0} tvContDate.setText(count); tvContNo.setText(count + 1); tvContAmount.setText(count + 2);カウント+ = 3; countをint count = 0として宣言します。クラス(あなたの活動)のデータメンバーとして。私が間違っていたら、それを知らせてください。ありがとうございます:-) – user370305
ありがとうございます。それは難しいアイディアでした。私はアプリケーションがクラッシュしてテストしました。私はコードを書いた:if(position == 0) \t \t \t \t count = 0; \t \t \t tvContDate.setText(トークン[位置*カウント]); \t \t \t tvContNo。setText(トークン[位置*カウント+1]); \t \t \t tvContAmount.setText(トークン[位置*カウント+ 2])。 \t \t \t数= 3; – Hesam
私は各反復の後に3カウントを追加することはできないと思いますが、3を割り当てればOKです。もう一度 – Hesam