【问题标题】:How to set a shape drawable created in java to a listview item如何将在java中创建的可绘制形状设置为列表视图项
【发布时间】:2013-08-12 10:45:10
【问题描述】:

我有一个使用简单光标适配器的列表视图。

在代码中创建了一个可绘制的形状 -

DrawableProvider dr = new DrawableProvider();
ShapeDrawable shDr = dr.getDrawable();

LinearLayout v = (LinearLayout)findViewById(R.id.row_packlist);
v.setBackgroundDrawable(shDr);

下面是定义列表项的布局

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/row_packlist"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:orientation="vertical" >

因为这个原因它不起作用

 LinearLayout v = (LinearLayout)findViewById(R.id.row_packlist);

返回空值。

如何务实地将可绘制对象设置为背景?

【问题讨论】:

  • 确保在 setContentView() 调用中加载 inearlayout 所属的正确布局文件

标签: android android-listview android-drawable


【解决方案1】:

你可以在 Adapter 的 getView 中为 ConvertView 设置背景 另外,如果您想为每一行设置不同的可绘制对象,您可以根据适配器项的位置进行设置

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    Holder holder = null;

    if (convertView == null) {
        convertView = inflater.inflate(R.layout.layout_row, null);
            convertView.setBackgroundDrawable(shDr);
    }

【讨论】:

  • 我正在使用简单的光标适配器 SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.pack_list_row,cursor,FROM,TO);所以必须扩展 SimpleCursorAdapter 然后覆盖 getView。
  • 扩展 SimpleCursorAdapter 并覆盖 getView 以将可绘制对象设置为视图的背景可以解决视图背景的问题,但光标的值不会绑定到视图。
  • 是否有可能在行视图的xml中使用实用创建的drawable?
  • 无法在 xml 中使用以编程方式创建的可绘制对象。但是关于您的第一个问题,您应该再次在 getView() 中设置值,如果您有任何 ArrayList 数据,您可以使用 getView 中的位置从 arrayList 获取每行的特定数据,然后设置为您的视图。我建议你检查下面的链接,答案是使用 ArrayAdapter 的一个很好的例子:stackoverflow.com/questions/11678909/…
  • @MOHSEN NAVABI:它没有使用数组适配器,它使用的是 SimpleCursorAdapter。
【解决方案2】:

试试这个代码 线性布局布局 =(LinearLayout)findViewById(R.id.row_packlist); layout.setBackgroundResource(R.drawable.source);

【讨论】:

  • @Sanjay 已经提到过 LinearLayout v = (LinearLayout)findViewById(R.id.row_packlist);返回空值。这意味着 Activity 找不到此布局。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-17
  • 2010-11-06
  • 1970-01-01
  • 1970-01-01
  • 2011-10-29
  • 2019-03-10
相关资源
最近更新 更多