Reputation: 71
i want to draw arrow between two listview in activity ,the concept image As shown below.
every arrow line connect two same item in left listview and right listview.
when the any item in left listview change it's position, the arrow line must point to same item in the right listview.
can anyone help me to solve this question or give me some method
Upvotes: 0
Views: 982
Reputation: 3370
You have to use a main XML having 3 ListViews as following:
<?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>
Then you need a Row-XML just say "row_string" for LEFT and RIGHT listviews's row fillup, as following:
<?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>
Then you need a Image_XML just say "row_image" for middle listview as following:
<?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" />
Then you will need ImageBean, ImageAdapter class and Main Activity:
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:
import 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));
}
}
Upvotes: 1