Listview项目颜色变化onactivityResult

时间:2015-04-08 06:56:59

标签: android listview android-listview

我创建了一个列表视图并在列表项目上单击我正在开始一项活动。我在listview行中有一个文本。当我在onItemClick上调用的活动完成或者说返回结果并且结果代码为RESULT_OK时,我想更改该textview的颜色。

任何人请帮助

提前致谢。

这是我的代码:

HeadingListView = (ListView) findViewById(R.id.HeaderList);
adapter = new CustomHeadingAdapter(getApplicationContext(), HeadingList);
HeadingListView.setAdapter(adapter);
HeadingListView.setOnItemClickListener(this);

OnItemClickListener代码是:

public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    Intent intent;
    switch (position){
        case 0:
            intent = new Intent(getApplicationContext(), Activity1.class);
            intent.putExtras(AllFilledData.get(0));
            startActivityForResult(intent, position);
            break;
        case 1:
            intent = new Intent(getApplicationContext(), Activity2.class);
            intent.putExtras(AllFilledData.get(1));
            startActivityForResult(intent, position);
            break;
        case 2:
            intent = new Intent(getApplicationContext(), Activity3.class);
            intent.putExtras(AllFilledData.get(position));
            startActivityForResult(intent, position);
            break;

这是OnActivity结果:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode) {
        case 0 :
            if(resultCode == RESULT_OK){
                Bundle bundle = data.getExtras();
                AllFilledData.set(requestCode, bundle);
                //Here I want to change color of TextView of listitem at position 0
            }
            break;
        case 1:
            if(resultCode == RESULT_OK){
                Bundle bundle = data.getExtras();
                AllFilledData.set(requestCode, bundle);
                //Here I want to change color of TextView of listitem at position 1
            }
            break;
        case 2:
            if(resultCode == RESULT_OK){
                Bundle bundle = data.getExtras();
                AllFilledData.set(requestCode, bundle);
                //Here I want to change color of TextView of listitem at position 2
            }
            break;

1 个答案:

答案 0 :(得分:1)

嗯.. 首先在代码中的自定义适配器中添加方法。

View v = listview.getChildAt(int position); 

//从列表视图的顶部返回它的位置视图位置。 //不是适配器项目位置。

//并将视图折腾到适配器。

adapter.ChangeTextViewColor(v);


public void ChangeTextViewColor(View v){TextView txt = v.childAt(int position); // or findViewbyId(int id);

txt.setTextColor(Color.parse(String RGBcode)); //或其他方式 }

如果保持textview颜色使用viewholder。 在适配器的getView方法

if(items.get(position).colorchangeType == change) textview.setTextViewColor....

和onactivityresult的一些变化。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
    case 0 :
        if(resultCode == RESULT_OK){
            Bundle bundle = data.getExtras();
            AllFilledData.set(requestCode, bundle);
            adapter.getItem(requestCode).colorchangeType = change;
            adapter.notifysetdatachange();
            //Here I want to change color of TextView of listitem at position 0
        }
        break;

我的英语不好.............我希望有所帮助。