使用自定义listView适配器

时间:2016-04-15 15:45:12

标签: android listview custom-adapter listview-adapter

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

片段类显示列表

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>

1 个答案:

答案 0 :(得分:2)

检查LinearLayoutmatch_parent上的布局参数。它们都是layout_width="0dp"宽度,这意味着第一个是压缩第二个,第三个是空的。

使用layout_weight="1"TextView为所有<?php $personal_name="root.root"; $resposta=array("validar" => "correcte"); $json=json_encode($resposta); $res=mysqli_real_escape_string($json); $query_it=mysqli_query($conexio," INSERT INTO menu values('".$personal_name."','".$res."','".$res."','".$res."','".$res."','".$res."')"); if($query_it){ echo "correct"; } else{ echo "incorrect"; } ?> 提供相等的宽度。