Я создаю CategoryFragment, который будет отображать все данные, добавленные из моей деятельности. Код работает нормально, данные добавляются в базу данных, я проверил данные в Device File Explorer, и данные, которые я добавил, есть, но они не отображаются в моем списке просмотра. Вот коды:
CategoriesFragment.java
package com.example.devcash.Fragments;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SearchView;
import com.example.devcash.ADD_UI.AddCategoryActivity;
import com.example.devcash.CustomAdapters.CategoryAdapter;
import com.example.devcash.Database.DatabaseHelper;
import com.example.devcash.Lists.CategoryList;
import com.example.devcash.R;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.List;
/**
* A simple {@link Fragment} subclass.
*/
public class CategoriesFragment extends Fragment implements SearchView.OnQueryTextListener {
DatabaseHelper db;
ListView lv;
CategoryAdapter categoryAdapter;
public CategoriesFragment() {
// Required empty public constructor
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_categories, container, false);
//add floating action button
FloatingActionButton categories_fab = view.findViewById(R.id.addcategories_fab);
categories_fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// when add fab is pressed, go to add product activity
Intent addcategory = new Intent(getActivity(), AddCategoryActivity.class);
startActivity(addcategory);
}
});
return view;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
//handles listview
ListView lvcategories = (ListView) view.findViewById(R.id.categorylist_listview);
db = new DatabaseHelper(getActivity());
ArrayList<CategoryList> categoryListArrayList = new ArrayList<CategoryList>();
lvcategories.setAdapter(categoryAdapter);
categoryAdapter = new CategoryAdapter(getActivity(), categoryListArrayList);
categoryListArrayList = db.getAllCategory();
getActivity().setTitle("Categories");
}
//handles the search menu
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.searchmenu, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView) searchItem.getActionView();
searchView.setOnQueryTextListener(this);
searchView.setQueryHint("Search..");
super.onCreateOptionsMenu(menu, inflater);
}
}
fragmentcategories.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Fragments.CategoriesFragment"
android:padding="@dimen/text_padding">
<ListView
android:id="@+id/categorylist_listview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:dividerHeight="1dp"/>
<android.support.design.widget.FloatingActionButton
android:id="@+id/addcategories_fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
android:src="@drawable/ic_add"
android:tint="@color/whiteBG"
android:backgroundTint="@color/colorPrimary"/>
</FrameLayout>
CategoryAdapter.java
package com.example.devcash.CustomAdapters;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.example.devcash.Lists.CategoryList;
import com.example.devcash.R;
import java.util.ArrayList;
public class CategoryAdapter extends BaseAdapter {
private Context context;
private ArrayList<CategoryList> categoryListArrayList;
public CategoryAdapter(Context context, ArrayList<CategoryList> categoryListArrayList) {
this.context = context;
this.categoryListArrayList = categoryListArrayList;
}
@Override
public int getCount() {
return categoryListArrayList.size();
}
@Override
public Object getItem(int position) {
return categoryListArrayList.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView == null){
holder = new ViewHolder();
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.category_customlayout, null, true);
holder.textCategoryName = (TextView) convertView.findViewById(R.id.txtcategory_name);
convertView.setTag(holder);
}else{
holder = (ViewHolder)convertView.getTag();
}
//display the data into the CategoryFragment
holder.textCategoryName.setText(categoryListArrayList.get(position).getCategory_name());
return convertView;
}
private class ViewHolder{
protected TextView textCategoryName;
}
}