1

リストビュー内でスクロールテキスト(マーキー)を発生させようとしていますが、以前の読書から、テキストビューで setSelected(true) を使用する必要があるようです。

textview は listview ではなく listitem 内にあるため、その textView で getView を使用できないようで、setSelected を使用できません。

私はいくつかのコードで説明しようとします:

ここに私のoncreateがあります:

setContentView(R.layout.albumsview);



    Bundle extras = getIntent().getExtras();
    String where = extras.getString("where");
    String[] whereVal = extras.getStringArray("whereVal");

    String[] columns = { BaseColumns._ID, AudioColumns.ALBUM, };

    String orderBy = BaseColumns._ID;

    albumCursor = managedQuery(
            MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, columns, where,
            whereVal, orderBy);

    ListView listView = (ListView) findViewById(R.id.listViewAlbums);
    listView.setOnItemClickListener(this);
    String[] displayFields = new String[] { AudioColumns.ALBUM };
    int[] displayViews = new int[] { R.id.albumTitle };
    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
    R.layout.albumitem, albumCursor, displayFields, displayViews);
    listView.setAdapter(adapter);

「albumTitle」は、setSelected(true) にしたい textview (subTitle と呼ばれる) を含むビューです。

誰かがこれを行う方法を教えてもらえますか?

ご協力いただきありがとうございます。

4

3 に答える 3

1

私も同様のニーズがあり、次のアプローチを思い付きました。活動にSimpleCursorAdapter.ViewBinder取り入れました。このように見える単一のメソッドですpublic boolean setViewValue(View view, Cursor cursor, int columnIndex)。内部では、ビューから ID を取得します。TextViewそれが正しいものである場合は、それをandにキャストし、setText();その後にsetSelected(true)true を返します。興味のないビューでは、false を返し、TextView処理させます。カスタムを作成する必要はありませんTextView

于 2013-05-31T23:39:08.377 に答える
0

getChildCount()を使用して、リスト内の各ビュー レコードを取得できます。getChildAt(i) ここに私の例を示します

View getViewPattern;
    TextView getTextByPattern;
    String contentAnswerInPattern;
    for (int i = 0; i < listView.getChildCount(); i++) {
        getViewPattern = listView.getChildAt(i);
        getTextByPattern = (TextView) getViewPattern.findViewById(R.id.value_a);
        contentAnswerInPattern = getTextByPattern.getText().toString().trim();
    }
于 2012-06-02T09:44:57.033 に答える
0

Simple Adapter を使用している場合は、カスタム TextView を作成し、以下のように xml に追加する必要があります。

public class MyTextView extends TextView{

 public MyTextView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    init();
    rotate();
  }

public MyTextView(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();
    rotate();
  }

public MyTextView(Context context) {
    super(context);
    init();
    rotate();
  }

private void rotate() {
    // TODO Auto-generated method stub
    setSelected(true);
  }

private void init() {
    if (!isInEditMode()) {

    }
  }


 }

以下に示すように、 albumitem.xmlにカスタムのテキストビューを追加します。

 <Your Package Name.MyTextView
    android:layout_marginTop="10dip" android:id="@+id/tv_parse"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:textSize="22px"
    android:textColor="#34A4c5"
    android:ellipsize="marquee"
    android:maxWidth="220dp" 
    android:fadingEdge="horizontal"
    android:marqueeRepeatLimit="marquee_forever"
    android:scrollHorizontally="true"  
    android:singleLine="true"
    android:layout_marginLeft="10dp"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:layout_marginRight="10dp"></Your Package Name.MyTextView>
于 2012-06-02T09:59:43.860 に答える