预期效果:默认显示为两行 第一次点击显示4行 第二次点击两行 第三次点击4行 。。。

Alva_Bai 发布于 2014/10/28 16:38
阅读 110
收藏 0

<?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:orientation="vertical" >

    <ListView
        android:id="@+id/list_demo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </ListView>

</LinearLayout>

 

 

<RelativeLayout 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=".MainActivity" >

    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:ellipsize="end"
        android:maxLines="2"
        android:singleLine="false" />

</RelativeLayout>

 

public class MainAdapter extends BaseAdapter {

 private List<Map<String, Object>> list;
 private Context context;

 private int index = 1;

 private LayoutInflater inflater;

 public MainAdapter(List<Map<String, Object>> list, Context context) {
  super();
  this.list = list;
  this.context = context;
  inflater = LayoutInflater.from(context);
 }

 @Override
 public int getCount() {
  // TODO Auto-generated method stub
  return list.size();
 }

 @Override
 public Object getItem(int arg0) {
  // TODO Auto-generated method stub
  return list.get(arg0);
 }

 @Override
 public long getItemId(int arg0) {
  // TODO Auto-generated method stub
  return arg0;
 }

 class ViewHolder {
  TextView textView;
 }

 @Override
 public View getView(final int arg0, View arg1, ViewGroup arg2) {
  final ViewHolder holder;
  if (arg1 == null) {
   holder = new ViewHolder();
   arg1 = inflater.inflate(R.layout.activity_main, null);
   holder.textView = (TextView) arg1.findViewById(R.id.tv);
   holder.textView.setMaxLines(2);
   holder.textView.setSingleLine(false);
   arg1.setTag(holder);
  } else {
   holder = (ViewHolder) arg1.getTag();
  }
  holder.textView.setText(list.get(arg0).get("message").toString());
  holder.textView.setOnClickListener(new OnClickListener() {

   @Override
   public void onClick(View v) {
    if (index == 1) {
     holder.textView.setMaxLines(VIDEO_CONTENT_DESC_MIN_LIN);
     holder.textView.requestLayout();
     index = 2;
    } else if (index == 2) {

     holder.textView.setMaxLines(VIDEO_CONTENT_DESC_MAX_LINE);
     holder.textView.requestLayout();
     index = 1;
    }

   }
  });
  return arg1;
 }

}

 

public class MainActivity extends Activity {

 private int index = 0;
 private ListView listview;
 private List<Map<String, Object>> list;
 private MainAdapter adapter;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.list);

  listview = (ListView) findViewById(R.id.list_demo);
  list = new ArrayList<Map<String, Object>>();
  Map<String, Object> map = new HashMap<String, Object>();
  map.put("message",
    "qqqqqqdddddddddddddddddddddddddddddddddddddddddddddqqqqqqqqqqqqqqqeeeeeeeeeeeeeeeeeeeeeeeeeeeerrrrrrrrrrrrrrrrrrrrrrrr");

  list.add(map);
  adapter = new MainAdapter(list, getApplicationContext());
  listview.setAdapter(adapter);
 }

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.activity_main, menu);
  return true;
 }

}

预期效果:默认显示为两行   第一次点击显示4行   第二次点击两行  第三次点击4行 。。。

实际效果:默认显示4行  第一次点击显示4行 第二次点击显示2行 第三次点击显示4行 从第二次点击之后为预期的正常效果。

问题:默认显示错误 怎么才能达到预期的效果

 

加载中
返回顶部
顶部