【发布时间】:2016-01-13 13:43:42
【问题描述】:
不久前我开始从事一个小项目,主要目标是为我打造一种方法来跟踪我在 100 周内的行为。
我还是一个新手 android 开发者,我遇到了一个我无法解释的问题。
基本上我已经使用 ArrayAdapter 填充了一个 ListView,其中包含一个包含 100 个字符串(Week1、Week2、Week3 ... Week100)的列表
在每个 TextView 上设置一个 onclicklistener,这样当用户点击一个 textview 时,背景颜色会变为红色。
但是;每当我单击一个文本视图时 - 不止一个文本视图被着色。
注意事项:
我正在使用 ScrollView 滚动整个列表。 (填充后,100 周列表会填满整个屏幕,滚动视图用于访问整个列表。)
我还保存了对当前绘制的 textview 的引用,这样我可以确保当用户单击不同的 textview 时,前一个 textview 会失去其红色背景。
MainActivity 初始化:
public class MainActivity extends ActionBarActivity
{
TextView selectedWeek; // Reference to the selected week.
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
populateWeekList(); // Populating the ListView
initWeekClick(); // Initializing click listener
}
填充 ListView:
public void populateWeekList()
{
String[] weeks = new String [100]; // 100 weeks
for (int i=0; i<100;i++)
{
weeks[i] = "Week"+(i+1);
}
ArrayAdapter<String> weekAdapter = new ArrayAdapter<String>(
this,
R.layout.weeksview,
weeks
);
// R.id.weekTypeList is just a normal TextView.
ListView weekList=(ListView) findViewById(R.id.weekTypeList);
weekList.setAdapter(weekAdapter);
}
用于初始化 onClickListener 并保存 selectedWeek 引用的代码:
public void initWeekClick()
{
ListView weekList=(ListView) findViewById(R.id.weekTypeList);
weekList.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View viewClicked, int position, long id)
{
if (selectedWeek != null)
{
selectedWeek.setBackgroundColor(0);
}
TextView clicked = (TextView) viewClicked;
// Change clicked TextView color to red.
clicked.setBackgroundColor(getResources().getColor(android.R.color.holo_red_light));
// Save the selected week reference
selectedWeek = clicked;
}
});
}
【问题讨论】:
标签: android listview android-arrayadapter textview