I am trying to customize listview
(specifically changing the font size and color) that lists out some information that I saved using SQLiteOpenHelper
. To do so, I try to connect the customized setting in list_view_items.xml
in ListViewAdapter.java
. However, my listview is not customized, showing the basic font and size as follows:
How can I fix this problem to show the customized list?
Here is ListViewAdapter.java
:
package com.example.dailybible3;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.example.dailybible3.ListViewDataModel;
import com.example.dailybible3.R;
import java.util.ArrayList;
public class ListViewAdapter extends ArrayAdapter<ListViewDataModel> implements View.OnClickListener {
private ArrayList<ListViewDataModel> dataSet;
Context mContext;
// View lookup cache
private static class ViewHolder {
TextView list_view_item;
}
public ListViewAdapter(ArrayList<ListViewDataModel> data, Context context) {
super(context, R.layout.list_view_items, data);
this.dataSet = data;
this.mContext=context;
}
@Override
public void onClick(View v) {
int position=(Integer) v.getTag();
Object object= getItem(position);
ListViewDataModel dataModel = (ListViewDataModel) object;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Get the data item for this position
ListViewDataModel dataModel = getItem(position);
// Check if an existing view is being reused, otherwise inflate the view
ViewHolder viewHolder; // view lookup cache stored in tag
final View result;
if (convertView == null) {
viewHolder = new ViewHolder();
LayoutInflater inflater = LayoutInflater.from(getContext());
convertView = inflater.inflate(R.layout.list_view_items, parent, false);
viewHolder.list_view_item = (TextView) convertView.findViewById(R.id.text);
result = convertView;
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
result = convertView;
}
viewHolder.list_view_item.setText(dataModel.getNote());
// Return the completed view to render on screen
return convertView;
}
}
And here is my listview_items.xml
:
<?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:theme="@style/FontStyle"
android:orientation="vertical">
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="20dp"
android:text="Example"
android:textColor="@color/colorPrimary"
android:textSize="15sp"
android:textStyle="bold"
android:lineSpacingMultiplier="1.3"/>
</LinearLayout>
I found that it was a simple mistake that I used android.R.layout.simple_list_item_1
instead of the layout that I want to use. Just in case anyone finds similar problems like mine, I will leave my codes below.
My previous code:
ListAdapter adapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, listData);
mListView.setAdapter(adapter);
My edited code:
ListAdapter adapter = new ArrayAdapter<String>(getContext(),R.layout.list_view_items, listData);
mListView.setAdapter(adapter);