我已经开始在不久前开发一个小型项目,主要目标是为我在100周的过程中跟踪自己的行为。TextView更改适用于使用ListView和ArrayAdapter的多个TextView
我还是一名新手android开发者,我遇到了一个我无法解释的问题。
基本上我已经填充使用一个ArrayAdapter与含有100个字符串(Week1,Week2,译员更加... Week100)
在每个TextViews的设置一个onclicklistener列表一个ListView使得当用户执行点击一个textview,背景颜色会变成红色。
但是;每当我点击一个文本视图 - 不止一个文本视图被着色。
注:
我使用的是滚动型在整个列表中滚动。 (一旦填充,100周的列表填满整个屏幕,滚动视图用于访问整个列表)。
我还保存了对当前绘制的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;
}
});
}
R.id.text是什么意思?什么是你正在引用的“文本”? 这必须是动态的,用户可以点击100个TextView中的任何一个 –
它是在'R.layout.weeksview'中的'TextView'的id。 – Mohit
由Array Adapter创建100次,我如何区分他们,我试着将点击的视图传递给一个引用,因此,从逻辑上讲,我应该只访问一个TextView。 –