我有一个自定义列表视图的应用程序,它有一个textview和一个imageview。当我点击图像视图时,背景颜色应该改变。我试图这样做,但是得到了NullPointerException
。。。这是我的密码
CustomListViewAdapter。JAVA
public class ViewHolder {
TextView mName;
ImageView mDeleteImage;
}
public View getView(int position, View convertView, ViewGroup parent) {
holder = null;
DataFields rowItems = (DataFields) getItem(position);
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = inflater.inflate(R.layout.home_field_row, null);
holder = new ViewHolder();
holder.mName = (TextView) convertView.findViewById(R.id.hmFieldName);
holder.mDeleteImage = (ImageView)convertView.findViewById(R.id.hmFieldDeleteImage);
convertView.setTag(holder);
holder.mDeleteImage.setTag(position);
holder.mDeleteImage.setOnClickListener(new ImageView.OnClickListener() {
@Override
public void onClick(final View view) {
count++;
mListRowRL = (RelativeLayout)view.findViewById(R.id.hmFieldMainRL);
mListRowRL.setBackgroundColor(color.list_row_bg); //throwing NullPointerException
}
});
}
else {
holder = (ViewHolder) convertView.getTag();
}
holder.mName.setText(rowItems.getName());
return convertView;
}
任何建议都将不胜感激。谢谢
有一次我碰到了一只奇怪的虫子
我用这个在你的XML上解决了它(谷歌:):
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:focusable="false"
android:focusableInTouchMode="false" />
然后你可以指定一个选择器到你的根行项目:
<LinearLayout
android:id="@+id/LinearLayoutApplication"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/list_selector">
最后是选择器(res/color上的list_selector.xml):
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@color/light_blue"
android:state_pressed="true" />
<item
android:drawable="@color/light_blue"
android:state_selected="true" />
<item
android:drawable="@color/transparent" />
</selector>
holder.mDeleteImage.setOnClickListener(new ImageView.OnClickListener() {
@Override
public void onClick(final View view) {
count++;
mListRowRL = (RelativeLayout)view.findViewById(R.id.hmFieldMainRL);
mListRowRL.setBackgroundColor(color.list_row_bg); //throwing NullPointerException
}
});
您正在为ImageView分配一个单击侦听器,这很好。。但在onClick方法中,您试图搜索传入的视图(即ImageView)中的行。。ImageView将不包含任何子视图,因此您的mListRowRL将始终为空。试试这样的
final View clickView = convertView;
holder.mDeleteImage.setOnClickListener(new ImageView.OnClickListener() {
@Override
public void onClick(final View view) {
count++;
clickView.setBackgroundColor(color.list_row_bg);
}
});
我有一个具有自定义列表视图的应用程序,它具有文本视图和图像(删除),当我单击图像时,该行的背景颜色应更改,当我再次单击相同的图像时,其背景应更改为默认颜色。我可以改变背景颜色,但只有一次,我不能改变它两次,我的意思是我不能恢复到它的默认颜色。 这是我的密码。。。 CustomListView.java 还有一个问题是,背景色不是我在《颜色》中提到的颜色。xml,我通过放置不同的颜色进行了测试,但是
问题内容: 我有这个课: 问题是当我在JList中选择一个单元格时,我的背景不会变成红色。setText部分有效,但是我无法弄清楚为什么它不会更改单元格的背景颜色。任何人都有任何想法,谢谢! 问题答案: 主要问题是标签默认情况下是不透明的,因此您需要使标签不透明才能绘制背景。 但是您不需要为此创建自定义渲染器。默认渲染器是不透明的。您所需要做的就是设置列表的选择背景属性: 如果您尝试创建一个渲染器
问题内容: 因此,我看到我们可以使用具有灰色和白色(当setinverse …时)背景色的Alertdialog。 要了解为什么我检查了sdk的themes.xml,检查了它是否导致了可绘制对象,并且在那里我意识到alertdialog背景不是以编程方式完成的,而是通过一些图像完成的。这些图像保证了当我们使用LayoutInflater设置不同的背景色时,对话框的顶部(标题区域)和底部(按钮区域上
问题内容: 我有这种变化的背景颜色的例子的创立负荷使用或者与 但是,我想在一个复选框上创建一个事件,将其选中时将背景色更改为绿色,而取消选择时将其更改为默认值。 我无法使用上述方法进行这项工作。 有任何想法吗? PS:由于某些原因,我可以通过使用而不是背景来更改前景色 问题答案: LAF可以随意忽略某些(仅可见的?不知道的)JComponent属性的自定义设置,如以下文档所述: 外观和感觉取决于该
问题内容: 问题 我正在尝试创建带有可选项目的。我希望能够单击中的一个项目,并使该项目在列表中更改颜色,然后继续对行中的数据进行其他处理。 我正在使用。 如何做到这一点,以便当我点击一行时,它会变成不同的颜色,然后当我点击另一行时,新的行被选中并更改为新的颜色,而旧的行又变回普通颜色。 ? 码 到目前为止,这是我的代码。该班是有所有的数据,我想显示在我的组织和照顾。该方法返回,其中包含我所有数据的
更新问题 第1部分:最初,我首先要在选择一个项目后删除高亮选择(因为这会扰乱所做选择的背景色)。我看到这可以从这里完成>JComboBox中的删除高亮显示-(解决) 第二部分:现在...我试图让它识别选定的文本,并根据选定的文本改变背景色(当选定时,而不是当鼠标悬停在列表中的项上时)。它确实会改变颜色以匹配文本,但是当选择另一个对象(取消选择组合框)时,背景颜色会变回默认-(已解决-参见我的解决方