對於任何人誰是有興趣我會後我在這裏最終代碼:
lView.setEnabled(false);
btnsubmit.setEnabled(true);
int correct = curquestion.GetIndexOfCorrectAnswer();
// tell the system the correct answer
adapters.SetSelectedPosition(correct);
//adapters.setNotifyOnChange(true);
adapters.notifyDataSetChanged();
上面的代碼被稱爲上活動,下面是處理程序的自定義類。其他的xml文件你可能會想到。
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckedTextView;
import android.widget.TextView;
import com.example.walpdroid2.R;
public class QuizDataAdapter extends ArrayAdapter<Answer>
{
Answer [] objects = null;
Context checkcontext;
int _selectedIndex;
int checkedviewresourceid;
int uncheckedviewresourceid;
int selectedPos = -1;
public QuizDataAdapter(Context checkcontext, int checkresourceid, int uncheckresourceid, Answer[] objects)
{
super(checkcontext, checkresourceid, objects);
this.checkedviewresourceid = checkresourceid;
this.uncheckedviewresourceid = uncheckresourceid;
this.checkcontext = checkcontext;
this.objects = objects;
}
public int getCount()
{
return this.objects.length;
}
public Answer getItem(int position)
{
return this.objects[position];
}
public long getItemId(int position)
{
return position;
}
public void setSelected(int index) {
if (index == -1) {
// unselected
}
else {
// selected index...
}
_selectedIndex = index;
// notify the model that the data has changed, need to update the view
notifyDataSetChanged();
}
public void SetSelectedPosition(int pos)
{
this.selectedPos = pos;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View row = convertView;
CheckedTextView holder = null;
if((row == null) || (selectedPos == position))
{
LayoutInflater inflater = ((Activity)checkcontext).getLayoutInflater();
if(selectedPos == position)
{
row = inflater.inflate(checkedviewresourceid, parent, false);
holder = (CheckedTextView)row.findViewById(R.id.CheckRow);
}
else
{
row = inflater.inflate(uncheckedviewresourceid, parent, false);
holder = (CheckedTextView)row.findViewById(R.id.UnCheckRow);
}
holder.setText(objects[position].getAnswer());
row.setTag(holder);
}
else
{
holder = (CheckedTextView)row.getTag();
holder.setText(objects[position].getAnswer());
}
return row;
}
}
櫃面有人提出這一點,可惜我已經嘗試過了:((查看)lView.getItemAtPosition(正確))setBackgroundColor(Color.YELLOW); – tobylang 2012-07-24 05:52:24
'lView'中是否有更多的元素,比你可以放在屏幕上而不滾動'lView'? – overbet13 2012-07-24 06:05:21
請注意,如果'lView'中的元素多於無需滾動而放在屏幕上的元素,則在滾動時熄滅屏幕的元素將被回收(如果正確構建了「lView」)。我的意思是,無論在備份這個listView的適配器中有多少元素,listView將始終具有相同數量的子元素。這可以欺騙你,因爲你建立的模型來解決你的問題。 – overbet13 2012-07-24 06:13:07