如何禁用单行并在列表视图中更改其背景颜色,而无需按钮(或如果可能的方法)?

克朗

这篇文章的标题说明了一切。

此代码工作没有任何问题:

package abc.AvailableCars;

import android.graphics.Color;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class carListActivity extends Activity {

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

setContentView(R.layout.car_list_layout);

final ListView carListview = (ListView) findViewById(R.id.list_view);

final Button dButton = (Button) findViewById(R.id.disable_button);

String[] cars = {"Maxima GXE", "Passat", "Focus SE", "Mazda6", "Avalon", :Sentra GXE"};

final List<String> list_of_cars = new ArrayList<String>(Arrays.asList(cars));

final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>
        (this, android.R.layout.simple_list_item_1, list_of_cars);

carListview.setAdapter(arrayAdapter);

dButton.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
int chosenRow = 3;

carListview.getChildAt(3).setEnabled(false);
carListview.getChildAt(3).setBackgroundColor(Color.parseColor("#3f51b5"));

}

});

}

}

这是在我的 listview .xml 文件中:

<Button
    android:id="@+id/disable_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Disable A Row"
    />

但是,当我注释掉属于按钮的所有内容(如下所示)并调用 Car List 类时,应用程序因 Logcat 中的错误而崩溃:java.lang.NullPointerException: Attempt to invoke virtual method 'void android.空对象引用上的 view.View.setEnabled(boolean)':

final ListView carListview = (ListView) findViewById(R.id.list_view);
//final Button dButton = (Button) findViewById(R.id.disable_button);

String[] cars = {"Maxima GXE", "Passat", "Focus SE", "Mazda6", "Avalon"};

final List<String> list_of_cars = new ArrayList<String>(Arrays.asList(cars));

final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>
        (this, android.R.layout.simple_list_item_1, list_of_cars);

carListview.setAdapter(arrayAdapter);

//dButton.setOnClickListener(new View.OnClickListener() {

//@Override
//public void onClick(View v) {

int chosenRow = 3;

carListview.getChildAt(chosenRow).setEnabled(false);
carListview.getChildAt(chosenRow).setBackgroundColor(Color.parseColor("#3f51b5"));

}

//});

}

//}

我不再是 Android 新手了,但这让我望而却步。

我希望在显示列表视图后立即禁用所选行并设置颜色。

如何在没有按钮的情况下以编程方式执行此操作?

我已经尝试了我能想到的所有变体,getView(),甚至是假点击。

以防万一,此代码与 MainActivity.java 文件位于不同的类和文件中,并在该文件中调用。

必须有一个简单的答案。我需要改变什么?

请详细点。

谢谢你。

克朗

根据我的理解,由于 listViews 是视图,因此必须覆盖它们才能更改其中的某些内容。

我选择不禁用所需的行,而是在代码中检查它们。

完整的代码如下。
一些功劳归功于 Raghunandan 的回答 - Android - 更改 ListView 特定项目的背景颜色

再次抱歉,由于某种原因,代码的缩进无法正常工作。

import android.graphics.Color;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class CarListActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.car_list_layout);

final ListView carListview = (ListView) findViewById(R.id.list_view);

String[] cars = {"European Cars:", "Mercedes", "Passat", "Bently", "Porsche", "BMW", "Yugo","Land Rover",
"Japanese Cars:", "Maxima GXE", "Mazda6", "Avalon", "Toyota", "Honda", ""};

final List<String> list_of_cars = new ArrayList<String>(Arrays.asList(cars));

final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>
        (this, android.R.layout.simple_list_item_1, list_of_cars);

//------------------------------------------

carListview.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list_of_cars) {
// Since listViews are views, they have to be Overrdden for some things to be changed in them.
@Override
public View getView(int rowPosition, View convertView, ViewGroup parent) {

View row = super.getView(rowPosition, convertView, parent);

//------------------------------------------

// This works.  I have only tried this for two rows, the two I wanted.  I expected this line to crash the app, but it didn't.
if(getItem(rowPosition).equals("European Cars:") || getItem(rowPosition).equals("Japanese Cars:")) {

// Make the two rows have a white background color.
row.setBackgroundColor(Color.WHITE);  // this command WORKS fine by itself.

// row.setEnabled(false); this command caused "bleeding" over into other rows, so I will check for the rows in a condition.

}  // both of the getItems end here.

 else {

// All of the other rows should have this color.
row.setBackgroundColor(Color.parseColor("#EEE8AA"));
                                         // the default color

}  // else ends here.

//------------------------------------------

return row;

//------------------------------------------

}  // getView ends here.

});  // carListview.setAdapter ends here.

}  // onCreate ends here.

}  // CarListActivity ends here.

谢谢,我希望这对其他人有帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何动态更改列表视图中的背景颜色

来自分类Dev

更改单行的视图背景颜色

来自分类Dev

在列表视图中选择列表项时,如何更改其颜色?

来自分类Dev

如何更改列表视图中行的背景?

来自分类Dev

Android:如何更改列表视图中列表项的背景颜色,由SimpleCursorAdapter管理

来自分类Dev

从文本视图中获取背景颜色,而无需使用ColorDrawable(API 11)

来自分类Dev

jQuery刷新而无需按下按钮

来自分类Dev

如何在不同的列表视图中更改GridView资源的背景颜色

来自分类Dev

如何更改列表视图中所选项目的背景颜色

来自分类Dev

Android-可以更改列表视图中的按钮颜色

来自分类Dev

如何更改按钮的大小并为其添加背景颜色?

来自分类Dev

如何禁用视图中的按钮?

来自分类Dev

如何更改数据网格视图中的按钮颜色?

来自分类Dev

如何更改主题中的材质按钮禁用状态背景颜色?

来自分类Dev

如何在默认的多选列表视图中更改文本的颜色?

来自分类Dev

laravel通过路线发送数据以查看并在视图中显示它而无需更改url

来自分类Dev

在列表视图中更改所选项目的背景颜色和字体颜色

来自分类Dev

如何更改jquery移动列表视图1.40的背景颜色?

来自分类Dev

如何更改按钮的背景颜色?

来自分类Dev

如何更改按钮背景的颜色

来自分类Dev

MessageBox会自动继续,而无需按下按钮

来自分类Dev

警报显示消息而无需按“警报”按钮

来自分类Dev

如何使用背景颜色设置圆形按钮并在按下时更改颜色

来自分类Dev

如何使用背景颜色设置圆形按钮并在按下时更改颜色

来自分类Dev

如何禁用远程视图中的按钮?

来自分类Dev

如何禁用远程视图中的按钮?

来自分类Dev

如何使用列表视图列字段更改列表视图中行的背景色

来自分类Dev

如何在文本视图中找到多个单词以更改其颜色

来自分类Dev

如何更改在滚动视图和列表视图中显示为“滚动结束”的颜色

Related 相关文章

  1. 1

    如何动态更改列表视图中的背景颜色

  2. 2

    更改单行的视图背景颜色

  3. 3

    在列表视图中选择列表项时,如何更改其颜色?

  4. 4

    如何更改列表视图中行的背景?

  5. 5

    Android:如何更改列表视图中列表项的背景颜色,由SimpleCursorAdapter管理

  6. 6

    从文本视图中获取背景颜色,而无需使用ColorDrawable(API 11)

  7. 7

    jQuery刷新而无需按下按钮

  8. 8

    如何在不同的列表视图中更改GridView资源的背景颜色

  9. 9

    如何更改列表视图中所选项目的背景颜色

  10. 10

    Android-可以更改列表视图中的按钮颜色

  11. 11

    如何更改按钮的大小并为其添加背景颜色?

  12. 12

    如何禁用视图中的按钮?

  13. 13

    如何更改数据网格视图中的按钮颜色?

  14. 14

    如何更改主题中的材质按钮禁用状态背景颜色?

  15. 15

    如何在默认的多选列表视图中更改文本的颜色?

  16. 16

    laravel通过路线发送数据以查看并在视图中显示它而无需更改url

  17. 17

    在列表视图中更改所选项目的背景颜色和字体颜色

  18. 18

    如何更改jquery移动列表视图1.40的背景颜色?

  19. 19

    如何更改按钮的背景颜色?

  20. 20

    如何更改按钮背景的颜色

  21. 21

    MessageBox会自动继续,而无需按下按钮

  22. 22

    警报显示消息而无需按“警报”按钮

  23. 23

    如何使用背景颜色设置圆形按钮并在按下时更改颜色

  24. 24

    如何使用背景颜色设置圆形按钮并在按下时更改颜色

  25. 25

    如何禁用远程视图中的按钮?

  26. 26

    如何禁用远程视图中的按钮?

  27. 27

    如何使用列表视图列字段更改列表视图中行的背景色

  28. 28

    如何在文本视图中找到多个单词以更改其颜色

  29. 29

    如何更改在滚动视图和列表视图中显示为“滚动结束”的颜色

热门标签

归档