GVKun编程网logo

Android:Listview没有使用键盘(android listview按钮点击)

8

对于Android:Listview没有使用键盘感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍androidlistview按钮点击,并为您提供关于027Android可扩展的listview

对于Android:Listview没有使用键盘感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍android listview按钮点击,并为您提供关于027 Android 可扩展的 listview:ExpandableListView 的使用案例、android appwidget listview没有更新、android textview没有正确包装、android – ListView没有ListActivity的有用信息。

本文目录一览:

Android:Listview没有使用键盘(android listview按钮点击)

Android:Listview没有使用键盘(android listview按钮点击)

我的布局看起来像这样:
<LinearLayout>
  <RelativeLayout>
    Some Image and Text as Title
  </RelativeLayout>
  <RelativeLayout>
    <LinearLayout>
      <ListView>
        My message List
      </ListView>
    </LinearLayout>
    <RelativeLayout>
      Edit Box and Send Button
    </RelativeLayout>
  </RelativeLayout>
</LinearLayout>

我在显示时明确地将当前选择设置为列表的最后一项(最新).

如果未在底部的“编辑”框中输入文本,则屏幕如下所示:

Top Title
  List Item 8
  List Item 7
  ...
  List Item 2
  List Item 1
  Bottom Edit Box and Send Button

当我单击编辑框以输入我的消息时,屏幕如下所示:

Top Title
  List Item 8
  ...
  List Item 5
  Bottom Edit Box and Send Button
  Keyboard

我真正想要的是:

Top Title
  List Item 4
  ...
  List Item 1
  Bottom Edit Box and Send Button
  Keyboard

有谁可以帮助我吗?

解决方法

我找到了答案 here.

基本上只是使用自定义类扩展ListView,将onSizeChanged()方法覆盖为setSelection(getCount());

这似乎是最好的解决方案,看起来谷歌语音使用相同的策略(因为如果你在聊天列表的顶部,然后旋转屏幕,它会让你回到底部).

还要记住,在清单中活动的标签中存在android:windowSoftInputMode =“adjustResize”而不是adjustPan.

027 Android 可扩展的 listview:ExpandableListView 的使用案例

027 Android 可扩展的 listview:ExpandableListView 的使用案例

1.ExpandableListView 简介

ExpandableListView 是一种用于垂直滚动展示两级列表的视图,和 ListView 的不同之处就是它可以展示两级列表,分组可以单独展开显示子选项。这些选项的数据是通过 ExpandableListAdapter 关联的。

2.xml 页面布局

(1) 主界面布局 (CommonNumberQueryActivity 对应布局)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".CommonNumberQueryActivity">

    <TextView
        style="@style/TitleStyle"
        android:text="常用号码查询" />

    <!--可以扩展的listview:ExpandableListView-->
    <ExpandableListView
        android:id="@+id/elv_common_number"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

    </ExpandableListView>
</LinearLayout>

(2)elv_child_item_group.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="5dp"
    android:orientation="vertical" >
    <TextView
        android:id="@+id/tv_group_name"
        android:text="分组名称"
        android:layout_marginLeft="40dp"
        android:textSize="16sp"
        android:textColor="@color/red"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>


</LinearLayout>

(3)elv_child_item_child.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="5dp"
    android:orientation="vertical" >
    <TextView
        android:id="@+id/tv_name"
        android:text="电话名称"
        android:textSize="16sp"
        android:textColor="#000"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <TextView
        android:id="@+id/tv_number"
        android:text="电话号码"
        android:textSize="16sp"
        android:textColor="#000"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>

3.java 后台代码

package com.example.administrator.test62360safeguard;

import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.TextView;

import com.example.administrator.test62360safeguard.engine.CommonNumberDao;

import java.util.List;

public class CommonNumberQueryActivity extends AppCompatActivity {

    ExpandableListView elv_common_number;
    List<CommonNumberDao.Group> groupList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_common_number_query);
        initUI();
        initData();
    }

    /**
     * 给可扩展的listview:ExpandableListView准备数据,并填充
     * 首先将对应的数据库文件放入assets目录下
     */
    private void initData() {
        CommonNumberDao commonNumberDao=new CommonNumberDao();
        //获取数据库中的数据
        groupList = commonNumberDao.getGroup();
        System.out.println("groupList:"+groupList);
        //给ExpandableListView设置数据适配器
        elv_common_number.setAdapter(new MyAdapter());
    }

    private void initUI() {
        elv_common_number = findViewById(R.id.elv_common_number);
    }

    private class MyAdapter extends BaseExpandableListAdapter {
        @Override
        public int getGroupCount() {
            return groupList.size();
        }

        @Override
        public int getChildrenCount(int groupPosition) {
            return groupList.get(groupPosition).childList.size();
        }

        @Override
        public CommonNumberDao.Group getGroup(int groupPosition) {
            return groupList.get(groupPosition);
        }

        @Override
        public CommonNumberDao.Child getChild(int groupPosition, int childPosition) {
            return groupList.get(groupPosition).childList.get(childPosition);
        }

        @Override
        public long getGroupId(int groupPosition) {
            return groupPosition;
        }

        @Override
        public long getChildId(int groupPosition, int childPosition) {
            return childPosition;
        }

        /**
         * 固定写法不需要修改
         */
        @Override
        public boolean hasStableIds() {
            return false;
        }

        @Override
        public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
            View view = View.inflate(getApplicationContext(), R.layout.elv_child_item_group, null);
            TextView tv_group_name = view.findViewById(R.id.tv_group_name);
            tv_group_name.setText(getGroup(groupPosition).name);
            return view;
        }

        @Override
        public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
            View view = View.inflate(getApplicationContext(), R.layout.elv_child_item_child, null);
            TextView tv_name = view.findViewById(R.id.tv_name);
            TextView tv_number = view.findViewById(R.id.tv_number);
            tv_name.setText(getChild(groupPosition, childPosition).name);
            tv_number.setText(getChild(groupPosition, childPosition).number);
            return view;
        }

        /**
         * @return 孩子节点是否响应事件
         */
        @Override
        public boolean isChildSelectable(int groupPosition, int childPosition) {
            return false;
        }
    }
}

4. 效果图

 

android appwidget listview没有更新

android appwidget listview没有更新

我编写了一个AppWidget,它从ContentProvider中显示ListView中的一些数据,但是我无法更新它.当我第一次创建窗口小部件时,它会正确填充,但在AlarmManager的PendingIntent到达后,ListView上不会发生更新.这是代码:
Intent update = new Intent(context,MenuWidgetProvider.class);
update.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
update.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS,appWidgetIds);
PendingIntent pIUpdate = PendingIntent.getbroadcast(context,update,0);
((AlarmManager) context.getSystemService(Context.ALARM_SERVICE)).
set(AlarmManager.RTC,nextTime.toMillis(false),pIUpdate);

Log.d(TAG,"updating: " + dmt.mealName);

for (int i = 0; i < appWidgetIds.length; ++i) {
    int widgetId = appWidgetIds[i];

    RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.widget_menu);
    // meal name
    views.setTextViewText(R.id.widget_locname,prefs.getString(PREF_WIDGET_LOCNAME,""));

    // adapter
    Intent adapter = new Intent(context,MenuWidgetAdapterService.class);
    adapter.putExtra(EXTRA_LOCATIONID,prefs.getInt(PREF_WIDGET_LociD,-1));
    adapter.putExtra(EXTRA_MEALNAME,dmt.mealName);
    adapter.putExtra(EXTRA_DATE,dmt.date.toString());
    views.setRemoteAdapter(R.id.widget_list,adapter);

    // update
    manager.updateAppWidget(widgetId,views);
}

super.onUpdate(context,manager,appWidgetIds);

奇怪的是,当更新发生时,onUpdate()方法运行 – 我看到Log.d调用的输出 – 但我的RemoteViewsFactory中没有调用onDataSetChanged().即使我调用notifyAppWidgetViewDataChanged,也没有效果.

解决方法

这是因为您的RemoteViewsFactory缓存了为每个窗口小部件ID创建的工厂.因此,当相同的小部件发送创建新工厂的请求(通过Widget适配器服务)时,将返回相同的工厂.因此,列表视图不是“更新的”.

我是如何解决它的:

在你的WidgetProviderClass中

adapter.setData(Uri.fromParts("content",String.valueOf(appWidgetIds[i]+randomNumber),null));

randomNumber是一个随机数(WidgetProvider类的公共静态成员).

然后在RemoteViewsFactory类中,执行:

appWidgetId = Integer.valueOf(intent.getData().getSchemeSpecificPart())
            - WidgetProvider.randomNumber;

这让“服务”认为它必须为另一个小部件创建一个Factory,因此创建一个带有更新值的新工厂,该工厂附加到您的小部件.

希望这可以帮助.

android textview没有正确包装

android textview没有正确包装

我有以下xml来显示listView中的行.我希望带有id rowCreatedAt的TextView很好地包裹但它永远不会,只显示1行.我在其他问题中尝试了大多数解决方案并将其添加到代码中,但它仍然无效.谁能告诉我为什么……?

 我想避免为textview设置确切的大小.

   换句话说,为什么当宽度/高度设置为fill_parent时,rowCreatedAt textView不会包装文本,而其他textViews包装文本就好了?

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_margin="5dp"
    android:layout_marginBottom="5dp" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <ImageView
            android:id="@+id/rowUserImage"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:src="@drawable/twitter_icon" 
            android:layout_margin="5dp"/>

        <TextView
            android:id="@+id/rowCreatedAt"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textSize="10dp"
            android:textColor="#ff696969"
            android:ellipsize="none"
            android:singleLine="false"
            android:scrollHorizontally="false"
            android:layout_weight="1"
            android:maxLines="100"
            android:text="aaaaaaaaaaaaaaabbbbbbbbbbbbbb" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/rowUserName"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:text="username"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <TextView
            android:id="@+id/rowText"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:text="status text" />
    </LinearLayout>

</LinearLayout>

解决方法

<TextView
            android:id="@+id/rowCreatedAt"
             android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textSize="10dp"
            android:textColor="#ff696969"
            android:ellipsize="none"
            android:singleLine="false"
            android:scrollHorizontally="false"
            android:layout_weight="1"
            android:maxLines="100"
            android:text="aaaaaaaaaaaaaaabbbbbbbbbbbbbb" />

将android:layout_width =“fill_parent”更改为android:layout_width =“200dp”

android – ListView没有ListActivity

android – ListView没有ListActivity

我正在尝试在一些其他小部件(按钮,editText等)下设置Listview.我不想为listview使用另一个活动.阅读后我发现了 How can I implement a ListView without ListActivity? (use only Activity),我试图做到这一点,最后结束了:
这是我的main.xml:
<LinearLayout android:id="@+id/relativeLayout1"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:orientation="vertical">
<TextView ...[some code].../>
<EditText ...[some code].../>
<ImageButton ...[some code].../>
<Chronometer ..[some code]..../>
<ListView android:id="@+id/listView1" android:layout_height="wrap_content"
    android:layout_width="fill_parent"></ListView>

这是我的onCreate:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    button1 = (ImageButton) findViewById(R.id.button1);
    mChronometer = (Chronometer) findViewById(R.id.chronometer1);
    editText1 = (EditText) findViewById(R.id.editText1);
    ListView lv = (ListView) findViewById(R.id.listView1);
    String[] listword = new String[] {"Hello","World","Foo","Bar"};
    lv.setAdapter(new ArrayAdapter<String>(this,R.layout.list_item,listword));
    }

这里是list_item.xml

<?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="fill_parent"
android:padding="10dp"
android:textSize="16sp" >
</TextView>

当我在物理设备中进行调试时,应用程序只需保留所有黑色.如果我注释了涉及列表的onCreate()的行,那么应用程序可以工作(显然没有listview).
任何想法可能是错的?

解决方法

我实际上有一个应用程序与ListView下面的一些TextViews和以上两个按钮,让我抓住我的代码!

这是我的活动与列表视图下面的文本视图和上面的按钮(为了简洁相当有点删除):

public class BNYDirectoryResults extends Activity{

    public static String[] stuff;
    ListView list;
    BNYAdapter adapter;

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

        TextView headdisplay = (TextView)findViewById(R.id.results);
        TextView headCount = (TextView)findViewById(R.id.resultsTotal);
        TextView headPages = (TextView)findViewById(R.id.pages);

      //Set up the results list,see BNYAdapter
        list = (ListView)findViewById(R.id.list);
        adapter = new BNYAdapter (this,BNYDirectory.ReturnResults);
        list.setAdapter(adapter);

      //Sets up header information (pages,total results)
        //Just some stuff to change the TextViews


      //Passes EmployeeID and Phone Number to AND opens the details page
        list.setonItemClickListener(new OnItemClickListener(){
            public void onItemClick(AdapterView<?> parent,View view,int position,long id){
                String EID = BNYDirectory.ReturnResults[position][0];
                String phoneNumber = BNYDirectory.ReturnResults[position][2];

                BNYDirectoryTransaction.doDetails(EID,phoneNumber);
                Intent i = new Intent(view.getContext(),BNYDirectoryDetails.class);
                startActivity(i);

            }
        });
    }
}

这是它的XML文件:


<TextView
        android:id="@+id/results"
        android:text="Name"
        android:gravity="center"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1" android:text/>
    <TextView
        android:id="@+id/resultsTotal"
        android:text="Phone"
        android:gravity="center"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1" android:text/>
    <TextView
        android:id="@+id/pages"
        android:text="aim"
        android:gravity="center"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1" android:text/>
  </LinearLayout>

  <LinearLayout
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:orientation="horizontal">

    <TextView
        android:id="@+id/name"
        android:text="Name"
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1" />
    <TextView
        android:id="@+id/phone"
        android:text="Phone"
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1" />
    <TextView
        android:id="@+id/aim"
        android:text="aim"
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1" />
    <TextView
        android:id="@+id/dept"
        android:text="Dept"
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1" />
  </LinearLayout>

  <ListView
      android:id="@+id/list"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent" 
      android:layout_weight="1"/>

  <LinearLayout
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:orientation="horizontal">

    <Button
        android:id="@+id/prevButton"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:text="PrevIoUs" 
        android:layout_weight="1"/>
    <Button
        android:id="@+id/nextButton"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:text="Next" 
        android:layout_weight="1"/>

  </LinearLayout>
</LinearLayout>

这是列表的自定义适配器:

import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class BNYAdapter extends BaseAdapter {

    private Activity activity;
    private String[][] results;
    private static LayoutInflater inflater=null;

    public BNYAdapter(Activity a,String[][]info) {
        activity = a;
        results = info;
        inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    public int getCount() {
        return results.length;
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    public static class ViewHolder{
        public TextView name;
        public TextView phone;
        public TextView aim;
        public TextView dept;
    }

    public View getView(int position,View convertView,ViewGroup parent) {
        View vi=convertView;
        ViewHolder holder;
        if(convertView==null){
            vi = inflater.inflate(R.layout.item,null);
            holder=new ViewHolder();
            holder.name=(TextView)vi.findViewById(R.id.nameItem);
            holder.phone=(TextView)vi.findViewById(R.id.phoneItem);
            holder.aim=(TextView)vi.findViewById(R.id.aimItem);
            holder.dept=(TextView)vi.findViewById(R.id.deptItem);
            vi.setTag(holder);
        }
        else
            holder=(ViewHolder)vi.getTag();

        holder.name.setText(BNYDirectory.ReturnResults[position][1]);
        holder.phone.setText(BNYDirectory.ReturnResults[position][2]);
        holder.aim.setText(BNYDirectory.ReturnResults[position][3]);
        holder.dept.setText(BNYDirectory.ReturnResults[position][4]);
        return vi;
    }

}

和所有在一起,使一个页面像

我们今天的关于Android:Listview没有使用键盘android listview按钮点击的分享已经告一段落,感谢您的关注,如果您想了解更多关于027 Android 可扩展的 listview:ExpandableListView 的使用案例、android appwidget listview没有更新、android textview没有正确包装、android – ListView没有ListActivity的相关信息,请在本站查询。

本文标签: