`
410063005
  • 浏览: 177921 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

TextView跑马灯效果2

 
阅读更多

 参考 http://blog.csdn.net/sky181772733/article/details/7003125

 

      在前一篇讲到ListView中TextView跑马灯效果的问题。一种比较友好的方式是,ListView中只有被选中项才会触发跑马灯效果

 

       实现的思路是:监听到ListView的onItemClick事件时记录当前item的postion,并通知adapter数据发生改变(另一个item被选中,selected状态改变),需要getView更新View(之前selected的item停止跑马灯效果,当前selected的item开始跑马灯效果)。 下面看看是具体怎么实现的,

 

public class MainActivity extends ListActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        final MyArrayAdapter adapter = new MyArrayAdapter(this,
                R.layout.list_item, R.id.textView1);
        adapter.add("超长的文本超长的文本超长的文本");
        adapter.add("超长的文本超长的文本超长的文本");
        adapter.add("超长的文本超长的文本超长的文本");
        adapter.add("超长的文本超长的文本超长的文本");
        adapter.add("超长的文本超长的文本超长的文本");
        adapter.add("超长的文本超长的文本超长的文本");
        getListView().setAdapter(adapter);

        getListView().setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // 设置选中项
                adapter.setSelectedIndex(position);
                // 通知adapter数据发生变化(TextView的selected状态发生变化)
                adapter.notifyDataSetChanged();
            }
        });
    }

    class MyArrayAdapter extends ArrayAdapter<String> {

        public MyArrayAdapter(Context context, int resource,
                int textViewResourceId) {
            super(context, resource, textViewResourceId);
        }

        private int mSelectedIndex;

        public void setSelectedIndex(int index) {
            this.mSelectedIndex = index;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View v = super.getView(position, convertView, parent);

            TextView tv = (TextView) v.findViewById(R.id.textView1);
            if (mSelectedIndex == position) {
                tv.setSelected(true);
            } else {
                tv.setSelected(false);
            }
            return v;
        }
    }
} 

运行效果如下,代码见附件


 

  • 大小: 30.9 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics