Skip to content Skip to sidebar Skip to footer

Draw Arrow Between Two Listview

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 it

Solution 1:

You have to use a main XML having 3 ListViews as following:

<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="horizontal"android:weightSum="1" ><ListViewandroid:id="@+id/listView1"android:layout_width="0dp"android:layout_height="fill_parent"android:layout_weight="0.43" ></ListView><ListViewandroid:id="@+id/listView2"android:layout_width="0dp"android:layout_height="fill_parent"android:layout_weight="0.14" ></ListView><ListViewandroid: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"?><TextViewxmlns: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"?><ImageViewxmlns: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

publicclassImageBean{
    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;

publicclassImagesAdapterextendsArrayAdapter<ImageBean>{
    Context context;
    int resId;
    ImageBean[] imgbns;

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

    @Overridepublic View getView(finalint position, final View convertView, final ViewGroup parent) {
        Viewrow= convertView;
        ImgHolderhldr=null;
        if(row == null)
        {
            LayoutInflaterinflater= (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            row = inflater.inflate(resId, parent, false);
            hldr = newImgHolder();
            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;
    }

    staticclassImgHolder
    {
        ImageView img1;
    }
}

YourMainActivity.java:

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

public classHomePage 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));
    }
}

Post a Comment for "Draw Arrow Between Two Listview"