Java Listview截击片段
我想在片段中显示Java Listview截击片段,java,android,listview,adapter,Java,Android,Listview,Adapter,我想在片段中显示listview,但出现了一个错误 这是我的主要活动: public class HomeFragment extends Fragment { private List<Produk> produkList = new ArrayList<Produk>(); private ListView listView; private CustomListAdapter adapter; private ProgressDialog pDialog; priv
listview
,但出现了一个错误
这是我的主要活动:
public class HomeFragment extends Fragment {
private List<Produk> produkList = new ArrayList<Produk>();
private ListView listView;
private CustomListAdapter adapter;
private ProgressDialog pDialog;
private ServerRequest serverRequest;
JSONArray member = null;
private static final String url = "http://10.0.3.2:808/Koen_CI/index.php/daftar_barang_control";
public HomeFragment(){}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_home, container, false);
return rootView;
}
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
loadPreferences();
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
Log.d("TAG", "TEST1");
listView = (ListView) getActivity().findViewById(R.id.list);
Log.d("TAG", "TEST2");
adapter = new CustomListAdapter(getActivity(), produkList);
Log.d("TAG", "TEST3");
listView.setAdapter(adapter);
Log.d("TAG", "TEST4");
// Creating volley request obj
JsonArrayRequest produkReq = new JsonArrayRequest(url,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d("TAG", response.toString());
hidePDialog();
// Parsing json
for (int i = 0; i < response.length(); i++) {
try {
JSONObject obj = response.getJSONObject(i);
Produk produk = new Produk();
produk.setNamaProduk(obj.getString("nama_produk"));
produk.setHargaProduk(obj.getString("harga_produk"));
produk.setFotoProduk(obj.getString("foto_produk"));
Log.d("TAG", "TAG : " + produk.getNamaProduk());
// adding movie to movies array
produkList.add(produk);
} catch (JSONException e) {
e.printStackTrace();
}
}
// notifying list adapter about data changes
// so that it renders the list view with updated data
adapter.notifyDataSetChanged();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("TAG", "Error: " + error.getMessage());
hidePDialog();
}
});
// Adding request to request queue
AppController.getInstance().addToRequestQueue(produkReq);
}
这是什么
这是我的CustomListAdapter
public class CustomListAdapter extends BaseAdapter {
private Activity activity;
private LayoutInflater inflater;
private List<Produk> produkItems;
ImageLoader imageLoader = AppController.getInstance().getImageLoader();
public CustomListAdapter(Activity activity, List<Produk> produkItems) {
this.activity = activity;
this.produkItems = produkItems;
}
@Override
public int getCount() {
return produkItems.size();
}
@Override
public Object getItem(int location) {
return produkItems.get(location);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (inflater == null)
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null)
convertView = inflater.inflate(R.layout.list_row, null);
if (imageLoader == null)
imageLoader = AppController.getInstance().getImageLoader();
NetworkImageView thumbNail = (NetworkImageView) convertView
.findViewById(R.id.thumbnail);
TextView title = (TextView) convertView.findViewById(R.id.namaProduk);
TextView rating = (TextView) convertView.findViewById(R.id.hargastokProduk);
// getting movie data for the row
Produk p = produkItems.get(position);
// thumbnail image
thumbNail.setImageUrl(p.getFotoProduk(), imageLoader);
// title
title.setText(p.getNamaProduk());
// rating
rating.setText("Harga: " + p.getHargaProduk());
return convertView;
}
}
公共类CustomListAdapter扩展了BaseAdapter{
私人活动;
私人充气机;
私人物品清单;
ImageLoader ImageLoader=AppController.getInstance().getImageLoader();
公共CustomListAdapter(活动活动、列表项目){
这个。活动=活动;
this.produkItems=produkItems;
}
@凌驾
public int getCount(){
返回produkItems.size();
}
@凌驾
公共对象getItem(int位置){
返回produkItems.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
如果(充气器==null)
充气器=(充气器)活动
.getSystemService(上下文布局\充气机\服务);
if(convertView==null)
convertView=充气机。充气(R.layout.list_行,空);
如果(imageLoader==null)
imageLoader=AppController.getInstance().getImageLoader();
NetworkImageView缩略图=(NetworkImageView)convertView
.findviewbyd(R.id.thumboil);
TextView title=(TextView)convertView.findViewById(R.id.namaProduk);
TextView评级=(TextView)convertView.findViewById(R.id.hargastokProduk);
//正在获取行的电影数据
Produk p=produkItems.get(位置);
//缩略图像
setImageUrl(p.getFotoProduk(),imageLoader);
//头衔
title.setText(p.getNamaProduk());
//评级
rating.setText(“Harga:+p.getHargaProduk());
返回视图;
}
}
日志:
02-27 04:45:26.808:E/AndroidRuntime(4739):致命异常:主
02-27 04:45:26.808:E/AndroidRuntime(4739):java.lang.RuntimeException:无法启动活动组件信息{com.koenb_fashion_fix/com.koenb_fashion_fix.MainActivity}:java.lang.NullPointerException
02-27 04:45:26.808:E/AndroidRuntime(4739):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
02-27 04:45:26.808:E/AndroidRuntime(4739):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
02-27 04:45:26.808:E/AndroidRuntime(4739):在android.app.ActivityThread.access$600(ActivityThread.java:130)
02-27 04:45:26.808:E/AndroidRuntime(4739):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
02-27 04:45:26.808:E/AndroidRuntime(4739):在android.os.Handler.dispatchMessage(Handler.java:99)上
02-27 04:45:26.808:E/AndroidRuntime(4739):在android.os.Looper.loop(Looper.java:137)
02-27 04:45:26.808:E/AndroidRuntime(4739):位于android.app.ActivityThread.main(ActivityThread.java:4745)
02-27 04:45:26.808:E/AndroidRuntime(4739):位于java.lang.reflect.Method.Invokenactive(本机方法)
02-27 04:45:26.808:E/AndroidRuntime(4739):在java.lang.reflect.Method.invoke(Method.java:511)
02-27 04:45:26.808:E/AndroidRuntime(4739):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
02-27 04:45:26.808:E/AndroidRuntime(4739):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
02-27 04:45:26.808:E/AndroidRuntime(4739):在dalvik.system.NativeStart.main(本机方法)
02-27 04:45:26.808:E/AndroidRuntime(4739):由以下原因引起:java.lang.NullPointerException
02-27 04:45:26.808:E/AndroidRuntime(4739):位于com.koen_bfashion.image.CustomListAdapter.(CustomListAdapter.java:22)
02-27 04:45:26.808:E/AndroidRuntime(4739):在com.koenb_fashion_fix.Home_Fragment.onCreate(Home_Fragment.java:72)
02-27 04:45:26.808:E/AndroidRuntime(4739):在android.app.FragmentManagerImpl.moveToState(FragmentManager.java:796)
02-27 04:45:26.808:E/AndroidRuntime(4739):在android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1035)
02-27 04:45:26.808:E/AndroidRuntime(4739):在android.app.BackStackRecord.run(BackStackRecord.java:635)
02-27 04:45:26.808:E/AndroidRuntime(4739):在android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1397)
02-27 04:45:26.808:E/AndroidRuntime(4739):在android.app.Activity.performStart(Activity.java:5017)上
02-27 04:45:26.808:E/AndroidRuntime(4739):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2032)
02-27 04:45:26.808:E/AndroidRuntime(4739):。。。还有11个
在这里:
使用getActivity()
调用findViewById
方法意味着从添加了Fragment
的活动布局访问视图
使用onCreateView
中的rootView
对象访问片段布局中的视图:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_home, container, false);
listView = (ListView) rootView.findViewById(R.id.list);
return rootView;
}
不工作,先生,它仍然给我错误java.lang.nullpointerexception。我添加了listView=(listView)rootView.findviewbyd(R.id.list);在onCreateView方法中。在适配器=新CustomListAdapter(getActivity(),produkList)上,错误仍然相同@Xenix Putrasasongko:可能还存在一些其他问题,因此请显示完整的日志question@XenixPutraSasongko:在
CustomListAdapter.java
中,行号22
是什么?ImageLoader ImageLoader=AppController.getInstance().getImageLoader();我不知道,我从示例imagelistview中截取的代码。@XenixPutraSasongko:just commentImageLoader ImageLoader=AppController.getInstance().getImageLoader()代码>行和post链接,您从中找到此行\它没有获得活动。getActivity()正在返回nullyup,我如何修复它?@Xenix Putrasasongko:为什么不添加带有问题的完整日志?你是说LogCat?
listView = (ListView) getActivity().findViewById(R.id.list);
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_home, container, false);
listView = (ListView) rootView.findViewById(R.id.list);
return rootView;
}