- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写此代码以在 android 中拥有自定义列表。我正在使用
'com.android.support:support-v4:26.1.0'
我当前的代码试图显示包含图像和文本的 listview
,但我想这无关紧要。
FourthFragment.java
public class FourthFragment extends ListFragment {
private ArrayList<Weather> weatherProperties = new ArrayList<>();
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View myFragmentView = inflater.inflate(R.layout.fragment_fourth, container, false);
//create our property elements
weatherProperties.add(new Weather(10, "Smith Street", "Sydney", "NSW", "A large 3 bedroom apartment right in the heart of Sydney! A rare find, with 3 bedrooms and a secured car park.", 450.00, "property_image_1", 3, 1, 1));
weatherProperties.add(new Weather(66, "King Street", "Sydney", "NSW", "A fully furnished studio apartment overlooking the harbour. Minutes from the CBD and next to transport, this is a perfect set-up for city living.", 320.00, "property_image_2", 1, 1, 1));
weatherProperties.add(new Weather(1, "Liverpool Road", "Liverpool", "NSW", "A standard 3 bedroom house in the suburbs. With room for several cars and right next to shops this is perfect for new families.", 360.00, "property_image_3", 3, 2, 2));
weatherProperties.add(new Weather(567, "Sunny Street", "Gold Coast", "QLD", "Come and see this amazing studio apartment in the heart of the gold coast, featuring stunning waterfront views.", 360.00, "property_image_4" , 1, 1, 1));
TextView tv = (TextView) myFragmentView.findViewById(R.id.bedroom);
tv.setText("My Header");
// setListAdapter(new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,names));
// New Array Adapters
ArrayAdapter<Weather> adapter = new weatherArrayAdapter(getContext(), 0, weatherProperties);
//Find list view and bind it with the custom adapter
ListView listView = (ListView) tv.findViewById(R.id.customListView);
listView.setAdapter(adapter);
return myFragmentView;
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
// on click display the item in toast
Toast.makeText(getActivity(), (String)l.getItemAtPosition(position), Toast.LENGTH_SHORT).show();
}
static FourthFragment newInstance(int num) {
FourthFragment fourthFragment = new FourthFragment();
Bundle args = new Bundle();
args.putInt("num", num);
fourthFragment.setArguments(args);
return fourthFragment;
}
//custom ArrayAdapater
class weatherArrayAdapter extends ArrayAdapter<Weather>{
private Context context;
private List<Weather> weatherProperties;
//constructor, call on creation
public weatherArrayAdapter(Context context, int resource, ArrayList<Weather> objects) {
super(context, resource, objects);
this.context = context;
this.weatherProperties = objects;
}
//called when rendering the list
public View getView(int position, View convertView, ViewGroup parent) {
//get the weather we are displaying
Weather weather = weatherProperties.get(position);
//get the inflater and inflate the XML layout for each item
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
//conditionally inflate either standard or special template
View view;
view = inflater.inflate(R.layout.weather_layout, null);
TextView description = (TextView) view.findViewById(R.id.description);
TextView address = (TextView) view.findViewById(R.id.address);
TextView bedroom = (TextView) view.findViewById(R.id.bedroom);
TextView bathroom = (TextView) view.findViewById(R.id.bathroom);
TextView carspot = (TextView) view.findViewById(R.id.carspot);
TextView price = (TextView) view.findViewById(R.id.price);
ImageView image = (ImageView) view.findViewById(R.id.image);
//set address and description
String completeAddress = weather.getStreetNumber() + " " + weather.getStreetName() + ", " + weather.getSuburb() + ", " + weather.getState();
address.setText(completeAddress);
//display trimmed excerpt for description
int descriptionLength = weather.getDescription().length();
if(descriptionLength >= 100){
String descriptionTrim = weather.getDescription().substring(0, 100) + "...";
description.setText(descriptionTrim);
}else{
description.setText(weather.getDescription());
}
//set price and weather attributes
price.setText("$" + String.valueOf(weather.getPrice()));
bedroom.setText("Bed: " + String.valueOf(weather.getBedrooms()));
bathroom.setText("Bath: " + String.valueOf(weather.getBathrooms()));
carspot.setText("Car: " + String.valueOf(weather.getCarspots()));
//get the image associated with this weather
int imageID = context.getResources().getIdentifier(weather.getImage(), "drawable", context.getPackageName());
image.setImageResource(imageID);
return view;
}
}
}
没有 compiletime
错误,但这给了我 runtime
错误
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
at com.example.phocast.FourthFragment.onCreateView(FourthFragment.java:39)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2354)
我做错了什么?
如果你能把问题告诉我,我将不胜感激。
回答和评论后更新
错误在这里:(很抱歉把它作为引用,否则不允许我提交主要是代码错误
)
TextView tv = (TextView) myFragmentView.findViewById(R.id.bedroom);
tv.setText("My Header");
xml
是:
weather_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingTop="10dp"
android:paddingBottom="10dp">
<ImageView
android:id="@+id/image"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginRight="10dp"
android:contentDescription="Property Image" />
<LinearLayout
android:id="@+id/infoSection"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/image"
android:orientation="vertical">
<TextView
android:id="@+id/address"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:text="Street Address"
android:textSize="18sp" />
<TextView
android:id="@+id/description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:text="Description"
android:textSize="15sp" />
</LinearLayout>
<RelativeLayout
android:id="@+id/pricingSection"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/infoSection"
android:orientation="vertical">
<TextView
android:id="@+id/price"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:text="Price" />
<TextView
android:id="@+id/bedroom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/price"
android:layout_marginRight="15dp"
android:text="Bed:" />
<TextView
android:id="@+id/bathroom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/price"
android:layout_marginRight="15dp"
android:layout_toRightOf="@id/bedroom"
android:text="Bath:" />
<TextView
android:id="@+id/carspot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/price"
android:layout_marginRight="15dp"
android:layout_toRightOf="@id/bathroom"
android:text="Car:" />
</RelativeLayout>
</RelativeLayout>
更新 2:fragment_four.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimaryLight">
<ListView
android:id="@+id/customListView"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:layout_alignParentStart="true"
android:scrollbars="vertical"
android:textAlignment="gravity">
</ListView>
</RelativeLayout>
更新 3所以,我创建了一个 fourth_fragment.xml 作为:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/colorPrimaryLight">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:text="Description"
android:textSize="15sp" />
<ListView
android:id="@+id/customListView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_centerHorizontal="true"
android:scrollbars="vertical"
android:textAlignment="gravity"></ListView>
</LinearLayout>
并更改了行:
tv = (TextView) myFragmentView.findViewById(R.id.textView);
tv.setText("My Header");
但我仍然收到错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference
最佳答案
您将获得 null
在这里。检查你是否有TextView id
= bedroom
或不在布局fragment_fourth
TextView tv = (TextView) myFragmentView.findViewById(R.id.bedroom);
tv.setText("My Header");
您的错误:
'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
它的问题Id
你的TextView
,变量tv
可能是 null
你调用setText
方法null
,这是你做不到的。
并且像这样修改您的代码:
TextView tv; //Global Variable
tv = (TextView) myFragmentView.findViewById(R.id.bedroom);
tv.setText("My Header");
也试试:清理你的项目并重建它。
更改您的 fragmentfour.xml 代码:(如果需要,输入 ScrollView
)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/colorPrimaryLight">
<include
android:layout_width="fill_parent"
android:layout_height="wrap_content"
layout="@layout/yourTextView_layout)" />
<ListView
android:id="@+id/customListView"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:layout_alignParentStart="true"
android:scrollbars="vertical"
android:textAlignment="gravity">
</ListView>
</LinearLayout>
更新您的 Fragment Java 类:
ListView listView;//globally
TextView tv;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View myFragmentView = inflater.inflate(R.layout.fragment_fourth, container, false);
listView = (ListView) tv.findViewById(R.id.customListView);
//create our property elements
weatherProperties.add(new Weather(10, "Smith Street", "Sydney", "NSW", "A large 3 bedroom apartment right in the heart of Sydney! A rare find, with 3 bedrooms and a secured car park.", 450.00, "property_image_1", 3, 1, 1));
weatherProperties.add(new Weather(66, "King Street", "Sydney", "NSW", "A fully furnished studio apartment overlooking the harbour. Minutes from the CBD and next to transport, this is a perfect set-up for city living.", 320.00, "property_image_2", 1, 1, 1));
weatherProperties.add(new Weather(1, "Liverpool Road", "Liverpool", "NSW", "A standard 3 bedroom house in the suburbs. With room for several cars and right next to shops this is perfect for new families.", 360.00, "property_image_3", 3, 2, 2));
weatherProperties.add(new Weather(567, "Sunny Street", "Gold Coast", "QLD", "Come and see this amazing studio apartment in the heart of the gold coast, featuring stunning waterfront views.", 360.00, "property_image_4" , 1, 1, 1));
tv = (TextView) myFragmentView.findViewById(R.id.bedroom);
tv.setText("My Header");
// setListAdapter(new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,names));
// New Array Adapters
ArrayAdapter<Weather> adapter = new weatherArrayAdapter(getContext(), 0, weatherProperties);
//Find list view and bind it with the custom adapter
listView.setAdapter(adapter);
return myFragmentView;
}
关于java - 扩展 Listadapter 时出现运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48802921/
我正在编写一个具有以下签名的 Java 方法。 void Logger(Method method, Object[] args); 如果一个方法(例如 ABC() )调用此方法 Logger,它应该
我是 Java 新手。 我的问题是我的 Java 程序找不到我试图用作的图像文件一个 JButton。 (目前这段代码什么也没做,因为我只是得到了想要的外观第一的)。这是我的主课 代码: packag
好的,今天我在接受采访,我已经编写 Java 代码多年了。采访中说“Java 垃圾收集是一个棘手的问题,我有几个 friend 一直在努力弄清楚。你在这方面做得怎么样?”。她是想骗我吗?还是我的一生都
我的 friend 给了我一个谜语让我解开。它是这样的: There are 100 people. Each one of them, in his turn, does the following
如果我将使用 Java 5 代码的应用程序编译成字节码,生成的 .class 文件是否能够在 Java 1.4 下运行? 如果后者可以工作并且我正在尝试在我的 Java 1.4 应用程序中使用 Jav
有关于why Java doesn't support unsigned types的问题以及一些关于处理无符号类型的问题。我做了一些搜索,似乎 Scala 也不支持无符号数据类型。限制是Java和S
我只是想知道在一个 java 版本中生成的字节码是否可以在其他 java 版本上运行 最佳答案 通常,字节码无需修改即可在 较新 版本的 Java 上运行。它不会在旧版本上运行,除非您使用特殊参数 (
我有一个关于在命令提示符下执行 java 程序的基本问题。 在某些机器上我们需要指定 -cp 。 (类路径)同时执行java程序 (test为java文件名与.class文件存在于同一目录下) jav
我已经阅读 StackOverflow 有一段时间了,现在我才鼓起勇气提出问题。我今年 20 岁,目前在我的家乡(罗马尼亚克卢日-纳波卡)就读 IT 大学。足以介绍:D。 基本上,我有一家提供簿记应用
我有 public JSONObject parseXML(String xml) { JSONObject jsonObject = XML.toJSONObject(xml); r
我已经在 Java 中实现了带有动态类型的简单解释语言。不幸的是我遇到了以下问题。测试时如下代码: def main() { def ks = Map[[1, 2]].keySet()
一直提示输入 1 到 10 的数字 - 结果应将 st、rd、th 和 nd 添加到数字中。编写一个程序,提示用户输入 1 到 10 之间的任意整数,然后以序数形式显示该整数并附加后缀。 public
我有这个 DownloadFile.java 并按预期下载该文件: import java.io.*; import java.net.URL; public class DownloadFile {
我想在 GUI 上添加延迟。我放置了 2 个 for 循环,然后重新绘制了一个标签,但这 2 个 for 循环一个接一个地执行,并且标签被重新绘制到最后一个。 我能做什么? for(int i=0;
我正在对对象 Student 的列表项进行一些测试,但是我更喜欢在 java 类对象中创建硬编码列表,然后从那里提取数据,而不是连接到数据库并在结果集中选择记录。然而,自从我这样做以来已经很长时间了,
我知道对象创建分为三个部分: 声明 实例化 初始化 classA{} classB extends classA{} classA obj = new classB(1,1); 实例化 它必须使用
我有兴趣使用 GPRS 构建车辆跟踪系统。但是,我有一些问题要问以前做过此操作的人: GPRS 是最好的技术吗?人们意识到任何问题吗? 我计划使用 Java/Java EE - 有更好的技术吗? 如果
我可以通过递归方法反转数组,例如:数组={1,2,3,4,5} 数组结果={5,4,3,2,1}但我的结果是相同的数组,我不知道为什么,请帮助我。 public class Recursion { p
有这样的标准方式吗? 包括 Java源代码-测试代码- Ant 或 Maven联合单元持续集成(可能是巡航控制)ClearCase 版本控制工具部署到应用服务器 最后我希望有一个自动构建和集成环境。
我什至不知道这是否可能,我非常怀疑它是否可能,但如果可以,您能告诉我怎么做吗?我只是想知道如何从打印机打印一些文本。 有什么想法吗? 最佳答案 这里有更简单的事情。 import javax.swin
我是一名优秀的程序员,十分优秀!