私はAndroid開発のために新規です。Androidカスタムカスタムオブジェクトを持つArrayAdapter
私は、カスタムスタジオでカスタムオブジェクトを受け入れるためにカスタムArrayAdapter
を実装しようとしていました。
私はいくつかのチュートリアルからソースコードを参照しているが、私の画面出力は、カスタムオブジェクトのみArrayAdapter
のtextViewResourceId
とリンクではなく、カスタムオブジェクトのプロパティは、レイアウト内のすべてのEditText
に記入TextView
に記入することを不適切でした適切に。
私は問題を解決するためにArrayAdapter
のコンストラクタでtextViewResourceId
パラメータを削除しようとしましたが、Androidのメーカーがエラーを返しました - あなたはTextViewの
のリソースIDを指定する必要があり、私はカスタムオブジェクトのプロパティを記入したいですすべてEditText
とエラーメッセージは返されません、誰でも私にヒントを与えることができますか?ここで
は私のレイアウトです:
row_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/row_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"/>
<EditText
android:id="@+id/row_no"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_margin="1dp"
android:layout_gravity="center_horizontal"
android:background="@color/colorWhite"/>
<EditText
android:id="@+id/row_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_margin="1dp"
android:layout_gravity="center_horizontal"
android:background="@color/colorWhite"/>
</LinearLayout>
ここ
は私のカスタムオブジェクトです:
Row.java
public class Row
{
public int RowNo;
public String RowText;
public Row(int no, String text)
{
this.RowNo = no;
this.RowText = text;
}
}
はここに私のですcu STOM ArrayAdapter:ここ
RowAdapter.java
public class RowAdapter extends ArrayAdapter<Row> {
private final Activity _context;
private final ArrayList<Row> rows;
static class ViewHolder
{
EditText RowNo;
EditText RowText;
}
public RowAdapter(Activity context, ArrayList<Row> rows)
{
super(context,R.layout.row_layout, R.id.row_id ,rows);
this._context = context;
this.rows = rows;
}
public View GetView(int position, View convertView, ViewGroup parent){
ViewHolder holder = null;
if(convertView == null)
{
LayoutInflater inflater = _context.getLayoutInflater();
convertView = inflater.inflate(R.layout.row_layout,parent,false);
holder = new ViewHolder();
holder.RowNo = (EditText)convertView.findViewById(R.id.row_no);
holder.RowText = (EditText)convertView.findViewById(R.id.row_text);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
holder.RowNo.setText(rows.get(position).RowNo);
holder.RowText.setText(rows.get(position).RowText);
return convertView;
}
}
は私のActivityクラスです:
RowActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.row_list_page);
listView = (ListView)findViewById(R.id.list_view);
ArrayList<Row> rows = new ArrayList<Row>();
rows.add(new Row(1,"Test"));
rows.add(new Row(2,"Test"));
rows.add(new Row(3"Test"));
RowAdapter adapter = new RowAdapter(this,rows);
listView.setAdapter(adapter);
}
あなたは 'BaseAdapter'を使うことができます。 –
私はあなたがIDEの助けを借りて実装するのではなく、あなた自身でこれらを書いたと思います。さもなければ、 'override'アノテーションと' GetView'メソッドではなく 'getView'メソッドがあります。どちらもxamarinに関連していません。 –
Shree Krisbna:はい、そうです。次回はこの種の間違いを避けるために知性を使うつもりです。ありがとうございました。 – IsaacOrz