2012-07-20 82 views
0

我想在兩個listview中的活動中繪製箭頭,概念圖像如下所示。在兩個列表視圖之間繪製箭頭

每條箭頭線連接左側列表視圖和右側列表視圖中的兩個相同的項目。

當左側列表視圖中的任何項目更改其位置時,箭頭線必須指向右側列表視圖中的相同項目 。

誰能幫我解決這個問題,或者給我一些方法

enter image description here

enter image description here

+0

你有什麼解決辦法嗎? – 2016-02-24 13:01:42

回答

1

你必須使用具有3名列表視圖主XML如下:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal" 
    android:weightSum="1" > 

    <ListView 
     android:id="@+id/listView1" 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:layout_weight="0.43" > 
    </ListView> 

    <ListView 
     android:id="@+id/listView2" 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:layout_weight="0.14" > 
    </ListView> 

    <ListView 
     android:id="@+id/listView3" 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:layout_weight="0.43" > 
    </ListView> 

</LinearLayout> 

然後,你需要一個Row-XML只需要說「row_string」爲LEFT和RIGHT列表視圖的列fillup,如下:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="35dp" > 
</TextView> 

然後,你需要一個Image_XML只是說「row_image」爲中間的列表視圖如下:

<?xml version="1.0" encoding="utf-8"?> 
<ImageView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/imgv1" 
    android:layout_width="wrap_content" 
    android:layout_height="35dp" 
    android:background="#0000ff" /> 

然後你需要ImageBean,ImageAdapter類和主要活動:

ImageBean.java

public class ImageBean { 
    String imgnm; 
} 

ImageAdapter.java

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ImageView; 

public class ImagesAdapter extends ArrayAdapter<ImageBean>{ 
    Context context; 
    int resId; 
    ImageBean[] imgbns; 

    public ImagesAdapter(Context context, int resId, ImageBean[] imgbns) { 
     super(context, resId, imgbns); 
     this.context = context; 
     this.resId = resId; 
     this.imgbns = imgbns; 
    } 

    @Override 
    public View getView(final int position, final View convertView, final ViewGroup parent) { 
     View row = convertView; 
     ImgHolder hldr = null; 
     if(row == null) 
     { 
      LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      row = inflater.inflate(resId, parent, false); 
      hldr = new ImgHolder(); 
      hldr.img1 = (ImageView) row.findViewById(R.id.imgv1); 
      row.setTag(hldr); 
     } 
     else{ 
      hldr = (ImgHolder)row.getTag(); 
     } 
     hldr.img1.setImageDrawable(context.getResources().getDrawable((R.drawable.right_arrow))); 
     //hldr.rImg1.setImageBitmap(readImage(imgbns[position].imgnm)); 
     return row; 
    } 

    static class ImgHolder 
    { 
     ImageView img1; 
    } 
} 

YourMainActivity.java:

進口android.app.Activity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.ListView;

public class HomePage extends Activity { 

    ListView lv1, lv2, lv3; 
    String[] strs1 = {"11", "11111", "111", "omijnu", "op", "11", "11111", "111", "omijnu", "op", "opiuyj", "abc", "bcd", "asddjjd", "omijnu", "op", "opiuyj"}; 
    ImageBean[] imgbns; 
    //String[] strs3 = {"3333333", "33333", "333333333", "333", "3333", "3333", "333", "3333", "333333333333333333333333", "3333", "333", "333", "333", "3333", "3333333"}; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.home); 

     lv1 = (ListView) findViewById(R.id.listView1); 
     lv2 = (ListView) findViewById(R.id.listView2); 
     lv3 = (ListView) findViewById(R.id.listView3); 

     imgbns = new ImageBean[25]; 

     ImagesAdapter imgadptr = new ImagesAdapter(this, R.layout.row_image, imgbns); 

     lv1.setAdapter(new ArrayAdapter<String>(this, R.layout.row_string, strs1)); 
     lv2.setAdapter(imgadptr); 
     lv3.setAdapter(new ArrayAdapter<String>(this, R.layout.row_string, strs1)); 
    } 
} 
+0

非常感謝,它非常有用,但我真正想要的效果就像第二個圖像,我不知道如何修復中間的listview以達到效果。 – cihm 2012-07-20 19:53:18