I am trying to use custom list View adapter, to customize UI of the listView. But I am not able to setTextview of the custom List View. titleView.setText(tem);
in custom Adapter is not working. It is not giving any error. It displays empty string in Text View (Which I set from Adapter class dynamically), and display text View correctly, which is hard coded in the itemlistView (shows that the custom adapter is correctly connected with the fragment). Could someone help me with this ?
Fragment class displaying list
public class Help_FromFriend_OfferedFragment extends Fragment {
ListView msgList;
ArrayList<post> details;
AdapterView.AdapterContextMenuInfo info;
private String Preference;
public Help_FromFriend_OfferedFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_help__from_friend__offered, container, false);
msgList = (ListView) rootView.findViewById(R.id.listView_post);
details = new ArrayList<post>();
post Detail;
Detail = new post();
Detail.setPost_heading("Heading 1");
Detail.setPost_owner_name("Bob");
details.add(Detail);
Detail = new post();
Detail.setPost_heading("Heading 2");
Detail.setPost_owner_name("Bob 2");
details.add(Detail);
msgList.setAdapter(new postListViewCustomAdaptor(details, getActivity()));
return rootView;
}
}
Fragment layout
<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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.Help_FromFriend_OfferedFragment"
tools:showIn="@layout/activity_help__from_friend__offered"
android:background="#999999"
>
<ListView
android:background="#984442"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/listView_post"
android:layout_gravity="left|top" />
</FrameLayout>
custom Adaptor class
public class postListViewCustomAdaptor extends BaseAdapter {
private ArrayList<post> _data;
Context _c;
postListViewCustomAdaptor (ArrayList<post> data, Context c){
_data = data;
_c = c;
}
public int getCount() {
// TODO Auto-generated method stub
return _data.size();
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return _data.get(position);
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View v = convertView;
if (v == null)
{
LayoutInflater vi = (LayoutInflater)_c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.list_item_post, null);
Log.v("custom Adaptor","v is null ");
}
//ImageView image = (ImageView) v.findViewById(R.id.post_photo);
TextView titleView = (TextView)v.findViewById(R.id.post_title);
TextView ownerNameView = (TextView)v.findViewById(R.id.post_owner_name);
post post_details = _data.get(position);
//image.setImageResource(post_details .getPost_photo());
Log.v("custom Adaptor", "setting postHeading: " + post_details.getPost_heading());
String tem ="faltu";
Log.v("custom Adaptor", "title from View : " + titleView.getText());
titleView.setText(tem);
ownerNameView.setText(post_details .getPost_owner_name());
return v;
}
}
list_item_post.xml (custom list item)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content" android:orientation="horizontal" >
<ImageView
android:id="@+id/post_photo"
android:layout_width="wrap_content"
android:layout_height="40dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="oo"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#FFFFFF"
android:background="#896322" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/post_title"
android:layout_gravity="center"
android:text="ahaha"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#FFFFFF"
android:background="#003366" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/post_owner_name"
android:layout_gravity="center"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#003366" />
</LinearLayout>
</LinearLayout>
Check the layout params on the TextView
s within your LinearLayout
. They are all match_parent
width, meaning the first is squashing the second and third to nothing.
Use layout_width="0dp"
and layout_weight="1"
to give all of the TextView
s equal width.