AndroidListViewTestActivity.java
import java.util.ArrayList; import java.util.List; import android.app.ListActivity; import android.os.Bundle; public class AndroidListViewTestActivity extends ListActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); List<BindData> list = new ArrayList<BindData>(); // ここにlistに項目を追加する処理が入る list.add(new BindData("タイトル1", null , null)); list.add(new BindData(null, "line1-1" ,"line1-2")); list.add(new BindData("タイトル2", null , null)); list.add(new BindData(null, "line2-1" ,"line2-2")); list.add(new BindData(null, "line2-12" ,"line2-22")); MyAdapter adapter = new MyAdapter(this, list); setListAdapter(adapter); } }
MyAdapter.java
import java.util.List; import android.content.Context; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.TextView; class BindData { String title; String line1; String line2; public BindData(String string0, String string1, String string2) { this.title = string0; this.line1 = string1; this.line2 = string2; } } class ViewHolder { TextView title; TextView line1; TextView line2; } public class MyAdapter extends ArrayAdapter<BindData> { private LayoutInflater inflater; public MyAdapter(Context context, List<BindData> objects) { super(context, 0, objects); this.inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public boolean isEnabled(int position) { // 選択不可にする return true; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = inflater.inflate(R.layout.raw, parent, false); holder = new ViewHolder(); holder.title = (TextView) convertView.findViewById(R.id.title); holder.line1 = (TextView) convertView.findViewById(R.id.line1); holder.line2 = (TextView) convertView.findViewById(R.id.line2); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } BindData data = getItem(position); //Log.d("タグ", ":" + position); //Log.d("タグ", "::" + data.title); //Log.d("タグ", ":::" + isEnabled(position)); // タイトル if ( getItem(position).title != null ) { holder.title.setVisibility(View.VISIBLE); holder.title.setText(data.title); holder.line1.setVisibility(View.GONE); holder.line2.setVisibility(View.GONE); // line1,2 } else { holder.title.setVisibility(View.GONE); holder.line1.setVisibility(View.VISIBLE); holder.line1.setText(data.line1); holder.line2.setVisibility(View.VISIBLE); holder.line2.setText(data.line2); } return convertView; } }
main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ListView android:id="@id/android:list" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>
raw.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <!-- グループタイトル --> <TextView android:id="@+id/title" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#808080" android:textColor="#FFFFFF" android:text="title" android:gravity="center"/> <!-- アルバム名 --> <TextView android:id="@+id/line1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="line1"/> <!-- アーティスト名 --> <TextView android:id="@+id/line2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="line2"/> </LinearLayout>
[ソースコード公開中]
Google Code
0 件のコメント:
コメントを投稿