Problem in Dialog With ListVIew

2019-04-17 16:14发布

Here is the my code for the Dialog With ListView and here i also maintain the state when the user click on list it background will be fill with green as you can see in my image below

But problem that i have is below

1>I want to increase my row height .How can do?

2>and i also want to put image beside in all row is this possible?

Here is my image in which i want to put image beside all list items

Here is my code for all this stuff.

 package com.android.listselector;

 import java.util.ArrayList;
 import java.util.List;

 import android.app.Activity;
 import android.app.Dialog;
 import android.content.Context;
 import android.graphics.Color;
 import android.os.Bundle;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.AdapterView;
 import android.widget.ArrayAdapter;
 import android.widget.Button;
 import android.widget.ListView;
 import android.widget.TextView;
 import android.widget.AdapterView.OnItemClickListener;

  public class ListSelector extends Activity {
private SelectedAdapter selectedAdapter;
private ArrayList<String> list;
private Context mContext = ListSelector.this;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // setContentView(R.layout.selected_example);
    String[] items = { "lorem", "ipsum", "dolor", "sit", "amet",
            "consectetuer", "adipiscing", "elit", "morbi", "vel", "ligula",
            "vitae", "arcu", "aliquet", "mollis", "etiam", "vel", "erat",
            "placerat", "ante", "porttitor", "sodales", "pellentesque",
            "augue", "purus" };
    // populate the model - a simple a list
    list = new ArrayList<String>();
    for (int i = 0; i < items.length; i++) {
        list.add(items[i]);

    }
    // create our SelectedAdapter
    selectedAdapter = new SelectedAdapter(this, 0, list);
    selectedAdapter.setNotifyOnChange(true);

    Dialog dialog = new Dialog(mContext);
    dialog.setContentView(R.layout.selected_example);
    dialog.setTitle("Custom Dialog");
    ListView listview = (ListView) dialog.findViewById(R.id.listExample);

    listview.setAdapter(selectedAdapter);

    dialog.show();

    listview.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View view,
                int position, long id) {
            // user clicked a list item, make it "selected"
            selectedAdapter.setSelectedPosition(position);
        }
    });
}

// move up event handler

// move down event handler

// Move selected item "up" in the ViewList.
private void moveUp() {
    int selectedPos = selectedAdapter.getSelectedPosition();
    if (selectedPos > 0) {
        String str = list.remove(selectedPos);
        list.add(selectedPos - 1, str);
        // set selected position in the adapter
        selectedAdapter.setSelectedPosition(selectedPos - 1);
    }
}

// Move selected item "down" in the ViewList.
private void moveDown() {
    int selectedPos = selectedAdapter.getSelectedPosition();
    if (selectedPos < list.size() - 1) {
        String str = list.remove(selectedPos);
        list.add(selectedPos + 1, str);
        // set selected position in the adapter
        selectedAdapter.setSelectedPosition(selectedPos + 1);
    }
}

public class SelectedAdapter extends ArrayAdapter<String> {

    // used to keep selected position in ListView
    private int selectedPos = -1; // init value for not-selected

    public SelectedAdapter(Context context, int textViewResourceId,
            List<String> objects) {
        super(context, textViewResourceId, objects);
    }

    public void setSelectedPosition(int pos) {
        selectedPos = pos;
        // inform the view of this change
        notifyDataSetChanged();
    }

    public int getSelectedPosition() {
        return selectedPos;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View v = convertView;

        // only inflate the view if it's null
        if (v == null) {
            LayoutInflater vi = (LayoutInflater) this.getContext()
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.selected_row, null);
        }

        // get text view
        TextView label = (TextView) v.findViewById(R.id.txtExample);

        // change the row color based on selected state
        if (selectedPos == position) {
            label.setBackgroundColor(Color.GREEN);
        } else {
            label.setBackgroundColor(Color.WHITE);
        }

        label.setText(this.getItem(position).toString());
        /*
         * // to use something other than .toString() MyClass myobj =
         * (MyClass)this.getItem(position);
         * label.setText(myobj.myReturnsString());
         */
        return (v);
    }
}

}

and here are the layout used in my code

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


    <ListView
android:id="@+id/listExample"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#CCCCCC"
    android:choiceMode="singleChoice"
     />

     <LinearLayout
     android:orientation="horizontal"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_gravity="bottom"
     >
     <Button
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_weight="1"
     android:id="@+id/btnMoveUp"
     />

     <Button
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_weight="1"
     android:id="@+id/btnMoveDown"
     />

     </LinearLayout>

here is other one

   <?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="wrap_content"
android:id="@+id/txtExample" android:textSize="18sp" android:textColor="#000000"
android:background="#FF0000">
    </TextView>

6条回答
啃猪蹄的小仙女
2楼-- · 2019-04-17 16:27

You have to make seprate layout for this to add image in the cell

查看更多
对你真心纯属浪费
3楼-- · 2019-04-17 16:28

If you want to make the ListView with different settings, you have to create the Custom ListView and also CustomAdapter for that listview.

http://saigeethamn.blogspot.com/2010/04/custom-listview-android-developer.html

http://www.androidpeople.com/android-custom-listview-tutorial-part-2

查看更多
老娘就宠你
4楼-- · 2019-04-17 16:32
  1. You should customize the listview to increase the row height.
  2. possible to put image only using the customized listview in dialog.

    check this

查看更多
Luminary・发光体
5楼-- · 2019-04-17 16:38

Yes i get solution by here all my answer

first i have to modify selected_row xml file by this

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="wrap_content" android:layout_height="100dip">
 <TextView android:layout_width="fill_parent"
    android:layout_height="40px" android:id="@+id/txtExample"
    android:textSize="18sp" android:textColor="#000000"
    android:gravity="center_vertical"
     />
<ImageView android:layout_width="wrap_content"
    android:layout_height="40px" android:id="@+id/imgbeside"
    android:scaleType="center" android:layout_centerVertical="true"
    android:layout_alignParentRight="true" android:src="@drawable/selector"
    android:layout_marginRight="10dip" />

and also in my java file i put the following thing below this line

  TextView label = (TextView) v.findViewById(R.id.txtExample);
  ImageView mImageview = (ImageView) v.findViewById(R.id.imgbeside); 

this will work for me.Ok Thanks For all reponse.

查看更多
相关推荐>>
6楼-- · 2019-04-17 16:42

Use this layout for your List row.....

  <?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="50dip"
  android:orientation="vertical"
      android:gravity="center_vertical">

    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:id="@+id/txtExample" android:textSize="18sp" android:textColor="#000000"
    android:background="#FF0000">
        </TextView>


      <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/icon"
 />

    </LinearLayout>
查看更多
爱情/是我丢掉的垃圾
7楼-- · 2019-04-17 16:54

Use the following code to get your expectation. image view is placed to the below of text view. If you want to see image view right side of taxt view then instead of using android:orientation="vertical" in linearlayout use android:orientation="horizontal"

selected_row.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/linearLayout"
    android:layout_marginTop="5dip"
    android:layout_marginBottom="5dip">
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:id="@+id/txtExample" android:textSize="18sp" android:textColor="#000000"
android:background="#FF0000">
    </TextView>
    <ImageView
        android:id="@+id/accountIcon"
        android:layout_width="wrap_content"![enter image description here][1]
        android:layout_height="wrap_content"
        android:background="@drawable/btn_public_message_focus"
        android:layout_marginRight="6dip" />
        </LinearLayout>

Donot forget to vote if my response is useful for you.

Thanks Deepak

enter image description here

查看更多
登录 后发表回答