Android:在列表视图中归档项目

发布于 2024-11-28 14:39:24 字数 5603 浏览 2 评论 0原文

我有一个列表视图,在其中显示文本项。我想显示一个复选框以及要执行的两种类型操作的文本。一种是当用户单击列表项时,它应该转到另一个活动,另一种是用户可以选择列表项的复选框并可以将项目移动到某些组。与我们在 gmail 收件箱中所做的类似。我该怎么办?有什么帮助吗?

这里我附上我的代码。 keywords.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/keywordlayout"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:background="@drawable/background_gradient"
 android:orientation="vertical"
 >
 <LinearLayout
    android:id="@+id/category_title_layout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:background="#fff"
    >
    <TextView
        android:id="@+id/category_title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text=""
        android:textColor="#000"
        android:textStyle="italic"
        android:typeface="sans"
        android:gravity="center"
        />
 </LinearLayout>
 <ListView
    android:id="@+id/keywordslist"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/background_gradient"
    >

 </ListView>
</LinearLayout>

用于显示列表项布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list_display"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<CheckBox
    android:id="@+id/chk_box"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:visibility="invisible"
>
</CheckBox>
<TextView 
    android:id="@+id/key_id"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    >
</TextView>
<TextView 
    android:id="@+id/key_name"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    android:textSize="16sp"
    android:textColor="#FFF">
</TextView>
</LinearLayout>

和我的活动的 java 代码的

package com.sample.epiphron;


public class KeywordsList extends Activity {

TextView category_title;
ListView keywords_list ;
String categoryid, categoryname;
private ArrayList<KeywordDetails> listItems = new ArrayList<KeywordDetails>(); 

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.keywords);
    Bundle extras = getIntent().getExtras();
    categoryid = extras.getString("category_id");
    categoryname = extras.getString("category_name");

    category_title = (TextView) findViewById(R.id.category_title);
    category_title.setText(""+categoryname+"- Keywords");
    keywords_list = (ListView) findViewById(R.id.keywordslist);
    drawList(LoginScreen.user_credential, categoryid);
    //Toast.makeText(this, chkbx.toString(), Toast.LENGTH_SHORT).show();
    keywords_list.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            // TODO Auto-generated method stub
            TextView txtv1 = (TextView) arg1.findViewById(R.id.key_id);
            Toast.makeText(KeywordsList.this, txtv1.getText(), Toast.LENGTH_LONG).show();
        }
    });

}

public void drawList(String userid, String cat_id){
    WebServiceCall res = new WebServiceCall();
    SoapObject result = res.fetchKeyword(userid, cat_id);

    ArrayList<String> al = new ArrayList<String>();
    for (int i = 0; i<result.getPropertyCount(); i++){
        SoapObject obj = (SoapObject) result.getProperty(i);
        al.add((String) obj.getProperty("keywordname"));
        KeywordDetails object = new KeywordDetails(Integer.parseInt(obj.getProperty("keywordid").toString()), obj.getProperty("keywordname").toString());
        listItems.add(object);
    }
    for ( int j = 0; j < result.getPropertyCount(); j++ ) {

    }
    keywords_list.setAdapter(new ListItemsAdapter(listItems));
}


public class KeywordDetails{
    private int keyword_id;
    private String keyword_name;

    public KeywordDetails(int key_id, String key_name){

        this.keyword_id = key_id;
        this.keyword_name = key_name;
    }
    public int getId(){
        return this.keyword_id;
    }
    public String getName(){
        return this.keyword_name;
    }

    //...
}
private class ListItemsAdapter extends ArrayAdapter<KeywordDetails> {
    ArrayList<KeywordDetails> obj = null;
    KeywordDetails keyworddtls = null;
    public ListItemsAdapter(ArrayList<KeywordDetails> items) {
        super(KeywordsList.this, android.R.layout.simple_list_item_1, items);
        this.obj = items;
    }

    public View getView(int position, View convertView, ViewGroup parent) {

        LayoutInflater inflater = getLayoutInflater();
        convertView = inflater.inflate(R.layout.keyword_list_item, null);
        final TextView text1 = (TextView) convertView.findViewById(R.id.key_id);
        TextView text2 = (TextView) convertView.findViewById(R.id.key_name);
        CheckBox chkbx = (CheckBox) convertView.findViewById(R.id.chk_box);
        keyworddtls = obj.get(position);

        text1.setText(Integer.toString(keyworddtls.getId()));
        text2.setText(keyworddtls.getName());
        chkbx.setVisibility(View.VISIBLE);                                  
        return convertView;
    }

}

xml 文件}

I'm having a listview in which I'm displaying the text items. I want to display a checkbox along with the text for two type of actions to be performed. one is when the user click on the list item it should take to another activity and another is the user can select the checkbox of the list item and can move the items to some groups. As similar to that we do in the gmail inbox. how can i do it ? Any help ?

Here I attach my code.
keywords.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/keywordlayout"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:background="@drawable/background_gradient"
 android:orientation="vertical"
 >
 <LinearLayout
    android:id="@+id/category_title_layout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:background="#fff"
    >
    <TextView
        android:id="@+id/category_title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text=""
        android:textColor="#000"
        android:textStyle="italic"
        android:typeface="sans"
        android:gravity="center"
        />
 </LinearLayout>
 <ListView
    android:id="@+id/keywordslist"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/background_gradient"
    >

 </ListView>
</LinearLayout>

The xml file used for displaying list items layout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list_display"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<CheckBox
    android:id="@+id/chk_box"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:visibility="invisible"
>
</CheckBox>
<TextView 
    android:id="@+id/key_id"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    >
</TextView>
<TextView 
    android:id="@+id/key_name"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    android:textSize="16sp"
    android:textColor="#FFF">
</TextView>
</LinearLayout>

and my java code for the activity

package com.sample.epiphron;


public class KeywordsList extends Activity {

TextView category_title;
ListView keywords_list ;
String categoryid, categoryname;
private ArrayList<KeywordDetails> listItems = new ArrayList<KeywordDetails>(); 

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.keywords);
    Bundle extras = getIntent().getExtras();
    categoryid = extras.getString("category_id");
    categoryname = extras.getString("category_name");

    category_title = (TextView) findViewById(R.id.category_title);
    category_title.setText(""+categoryname+"- Keywords");
    keywords_list = (ListView) findViewById(R.id.keywordslist);
    drawList(LoginScreen.user_credential, categoryid);
    //Toast.makeText(this, chkbx.toString(), Toast.LENGTH_SHORT).show();
    keywords_list.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            // TODO Auto-generated method stub
            TextView txtv1 = (TextView) arg1.findViewById(R.id.key_id);
            Toast.makeText(KeywordsList.this, txtv1.getText(), Toast.LENGTH_LONG).show();
        }
    });

}

public void drawList(String userid, String cat_id){
    WebServiceCall res = new WebServiceCall();
    SoapObject result = res.fetchKeyword(userid, cat_id);

    ArrayList<String> al = new ArrayList<String>();
    for (int i = 0; i<result.getPropertyCount(); i++){
        SoapObject obj = (SoapObject) result.getProperty(i);
        al.add((String) obj.getProperty("keywordname"));
        KeywordDetails object = new KeywordDetails(Integer.parseInt(obj.getProperty("keywordid").toString()), obj.getProperty("keywordname").toString());
        listItems.add(object);
    }
    for ( int j = 0; j < result.getPropertyCount(); j++ ) {

    }
    keywords_list.setAdapter(new ListItemsAdapter(listItems));
}


public class KeywordDetails{
    private int keyword_id;
    private String keyword_name;

    public KeywordDetails(int key_id, String key_name){

        this.keyword_id = key_id;
        this.keyword_name = key_name;
    }
    public int getId(){
        return this.keyword_id;
    }
    public String getName(){
        return this.keyword_name;
    }

    //...
}
private class ListItemsAdapter extends ArrayAdapter<KeywordDetails> {
    ArrayList<KeywordDetails> obj = null;
    KeywordDetails keyworddtls = null;
    public ListItemsAdapter(ArrayList<KeywordDetails> items) {
        super(KeywordsList.this, android.R.layout.simple_list_item_1, items);
        this.obj = items;
    }

    public View getView(int position, View convertView, ViewGroup parent) {

        LayoutInflater inflater = getLayoutInflater();
        convertView = inflater.inflate(R.layout.keyword_list_item, null);
        final TextView text1 = (TextView) convertView.findViewById(R.id.key_id);
        TextView text2 = (TextView) convertView.findViewById(R.id.key_name);
        CheckBox chkbx = (CheckBox) convertView.findViewById(R.id.chk_box);
        keyworddtls = obj.get(position);

        text1.setText(Integer.toString(keyworddtls.getId()));
        text2.setText(keyworddtls.getName());
        chkbx.setVisibility(View.VISIBLE);                                  
        return convertView;
    }

}

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

可遇━不可求 2024-12-05 14:39:24

所在的 xml 或用作项目布局的 xml 中添加复选框。然后在 getView() 中沿着 TextView 实例化 CheckBox。实现listview.setOnItemClickListener()并根据单击的项目(位置)启动活动[逻辑问题]对于分组的检查项目,您可以使用getCheckedItemPositions()。我希望这会给你带来灵感。

Add the CheckBox in the xml where is your <ListView > or in the xml which you use as item layout. Then in the getView() instantiate the CheckBox along the TextView. Implement listview.setOnItemClickListener() and based on which item was clicked (position) you start the activity [matter of logic] For the grouped of check items you can use getCheckedItemPositions(). I hope this will give you fire up idea.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文