java 使い方 画像 - ListActivity TwoLineListItem代替案




2 Answers

TwoLineListItemソースコードを切り取って、自分のレイアウトに貼り付けます。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TextView android:id="@+id/text1"
        android:textSize="16sp"
        android:textStyle="bold"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <TextView android:id="@+id/text2"
        android:textSize="16sp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>

(一貫性のためにIDを変更したことに注意してください。)

両方のTextViewへの参照を保持するViewHolderを使用してください。

public View getView(int position, View convertView, ViewGroup parent){
    ViewHolder holder;
    if(convertView == null){
        // You should fetch the LayoutInflater once in your constructor
        LayoutInflater inflater = (LayoutInflater)getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.list_item_2, null);

        // Initialize ViewHolder here
    }else{
        holder = (ViewHolder) convertView.getTag();
    }

    File file = filesArrayList.get(position);
    holder.text1.setText(file.getTitle());
    holder.text2.setText2(file.getDescription());
    return convertView;
}
編集 カスタマイズ

TwoLineListItemは、API 17以降では推奨されていません。ListActivityアダプタを次のように設定している場合、これに代わるものは何ですか?

ArrayAdapter<File> adapter = new ArrayAdapter<File>(this,android.R.layout.simple_list_item_2,filesArrayList){
            @Override
            public View getView(int position, View convertView, ViewGroup parent){
                final TwoLineListItem row;
                if(convertView == null){
                    LayoutInflater inflater = (LayoutInflater)getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                    row = (TwoLineListItem)inflater.inflate(android.R.layout.simple_list_item_2, null);
                }else{
                    row = (TwoLineListItem)convertView;
                }
                row.getText1().setText(filesArrayList.get(position).getTitle());
                row.getText2().setText2(filesArrayList.get(position).getDescription());
                return row;
            }

        };



最初は推奨されていないので、それほど悪くありません。 それは永遠にサポートされますので。 ;)

壊れていない場合は、修正しないでください。

あなたは自由にレイアウトを使うことができます! 次のようにモード選択を使用している場合は、選択した状態に応答するため背景を追加するだけです。

android:background="?android:attr/activatedBackgroundIndicator"



Related