2016-04-15 69 views
0

我想使用自定义列表视图适配器来自定义列表视图的UI。但我无法设置自定义列表视图的文本视图。自定义适配器中的titleView.setText(tem);不起作用。它没有给出任何错误。它在Text View(我从Adapter类动态设置)中显示空字符串,并正确显示文本View,该文本在itemlistView中硬编码(显示自定义适配器与片段正确连接)。有人可以帮助我吗?设置TextView的文本,使用自定义列表视图适配器

片段类显示列表

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; 
    } 
} 

片段布局

<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> 

定制适配器类

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(自定义列表项)

<?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> 

回答

2

检查您的LinearLayoutTextView的布局参数。它们都是宽度为match_parent,这意味着第一个将第二个和第三个压扁至无。

使用layout_width="0dp"layout_weight="1"给出所有TextView的等宽。

+0

非常感谢....这个愚蠢的错误浪费了我半天 – Tarun

相关问题