我正在尝试在列表视图中发生滚动文本(字幕),但从我之前的阅读中看来,我需要在textview上使用setSelected(true)。
因为textview在listitem而不是listview中,我似乎无法在该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”是包含textview(称为subTitle)的视图,我想要setSelected(true)。
有人可以告诉我该怎么做吗?
感谢您的帮助。
答案 0 :(得分: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();
}
答案 1 :(得分:0)
如果您使用简单适配器,则必须使用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 中添加custom textview,如下所示
<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>
答案 2 :(得分:0)
我也有类似的需求,并想出了以下方法。我在我的活动中实施了SimpleCursorAdapter.ViewBinder
。这是一个看起来像public boolean setViewValue(View view, Cursor cursor, int columnIndex)
的方法。在里面我从视图中获取id。如果它是正确的,我将其转换为TextView
并setText();
,然后setSelected(true)
并返回true。在我不感兴趣的视图上,我返回false并让TextView
处理它。无需创建自定义TextView
。