だから私は私が構築した基本アダプタクラスを持っています。また、これを自分の活動の 1 つに使用しようとしています。親レイアウト用の xml と、膨張させる行用の xml があります。ただし、これらのコンポーネントは互いにリンクしていません。アプリはクラッシュしませんが、行は膨張しません (ただし、親の xml ファイルは引き続き画面に表示されます)。私のコードを見て、私が見落としている重要なコンポーネントを教えてもらえますか? 関連するコードのみを投稿します。エラーが発生していないため、エラー ログを投稿できません。どうもありがとう
親 XML (nearby_places_list)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp"
android:orientation="vertical"
android:background="@drawable/bg">
<Button
android:id="@+id/continuetomap"
android:layout_height="100dp"
android:layout_width="match_parent"
android:background="@drawable/map_continue"
/>
<ListView
android:id="@+id/list_view_nearby"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:divider="#b5b5b5"
android:listSelector="@drawable/list_selector">
</ListView>
</LinearLayout>
XML をインフレートする行 (nearby_list_row)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="5dp"
android:orientation="vertical"
android:background="@drawable/list_selector">"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:background="@drawable/list_selector">
<LinearLayout
android:layout_width="0dp"
android:layout_weight="3"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@drawable/list_selector">
<TextView
android:id= "@+id/name"
android:textSize="20dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="name"
android:textColor="#54944d"/>
<TextView
android:id= "@+id/vicinity"
android:textSize="20dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="vicinity"
android:textColor="#000000"/>
<TextView
android:id= "@+id/openorclosed"
android:textSize="20dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Open"
android:textColor="#000000"
android:textStyle="bold"/>
</LinearLayout>
<RelativeLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.74" >
<Button
android:layout_width="60dp"
android:id="@+id/button_add_to_fav"
android:background="@drawable/add_square"
android:layout_height="60dp"
android:layout_alignParentRight="true"
/>
<Button
android:layout_width="60dp"
android:id="@+id/button_call_rest"
android:background="@drawable/add_square"
android:layout_height="60dp"
android:layout_alignParentRight="true"
android:layout_below="@+id/button_add_to_fav"
/>
</RelativeLayout>
</LinearLayout>
</RelativeLayout>
基本アダプター クラス
public class AdapterForList extends BaseAdapter {
private final Context context;
private final ArrayList<HashMap<String, String>> alHm;
private final String TAG_A;
private final String TAG_B;
private final String TAG_C;
public AdapterForList(Context context, ArrayList<HashMap<String, String>> alhm, String TAG_1, String TAG_2, String TAG_3) {
super();
this.context = context;
this.alHm = alhm;
TAG_A = TAG_1;
TAG_B = TAG_2;
TAG_C = TAG_3;
}
@Override
public View getView(int position, View convertView , ViewGroup parent){
LayoutInflater inflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflator.inflate(R.layout.nearby_list_row, parent, false);
TextView tv1 = (TextView) convertView.findViewById(R.id.name);
TextView tv2 = (TextView) convertView.findViewById(R.id.vicinity);
TextView tv3 = (TextView) convertView.findViewById(R.id.openorclosed);
Button btnAdd= (Button) convertView.findViewById(R.id.button_add_to_fav);
Button btnCall= (Button) convertView.findViewById(R.id.button_call_rest);
if (alHm.get(position).containsKey(TAG_A)){ // get the value from the key (if it exist) and set the first text view to it
String value = alHm.get(position).get(TAG_A);
tv1.setText(value);;
}
if (alHm.get(position).containsKey(TAG_B)){
String value = alHm.get(position).get(TAG_B);
tv2.setText(value);;
}
if (alHm.get(position).containsKey(TAG_C)){ // get the value from the key (if it exist) and set the first text view to it
String value = alHm.get(position).get(TAG_C);
tv3.setText(value);;
}
return convertView;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return alHm.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
}
関連活動コード
protected void onPostExecute(Boolean result){
if (result){
// adding data to listview
final ListView lv = (ListView) findViewById(R.id.list_view_nearby);
lv.setAdapter(new AdapterForList(context, listOfHM, JSONextractor.TAG_NAME,
JSONextractor.TAG_VICINITY, JSONextractor.TAG_OPERATINGHOURS_OPENNOW));
//more code ...
}
}