标签: baseadapter

跳过60帧!应用程序可能在其主线程上做了太多工作

我正在开发一个应该从Web服务获取JSON响应的应用程序并编写listview中的每个元素,我已经读过我应该使用AsyncTask来获取HTTP响应并且我做了它并且我可以从webservice检索数据并在TextViews中显示它们.但是当我尝试在列表视图中显示元素时,它不会显示任何内容并在logcat中给出以下消息:06-05 19:44:27.418: I/Choreographer(20731): Skipped 60 frames! The application may be doing too much work on its main thread.

这是我的主要代码:

public class MainActivity extends Activity {

    private static JsonObject response = new JsonObject();
    private ArrayList<SearchResults> results = new ArrayList<SearchResults>(); 
    private SearchResults sr1 = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        new LoginAction().execute("");  

        ArrayList<SearchResults> searchResults = results;
        final ListView lv1 = (ListView) findViewById(R.id.ListView01);
        lv1.setAdapter(new MyCustomBaseAdapter(this, searchResults));
    }

    @Override
    public boolean onCreateOptionsMenu(Menu …
Run Code Online (Sandbox Code Playgroud)

android android-listview android-asynctask baseadapter

22
推荐指数
2
解决办法
9万
查看次数

在自定义BaseAdapter子类中使用Butter Knives导致"无法注入视图"错误

我正在尝试使用Butter Knife来简化自定义BaseAdapter类的创建.我在这里的例子如下:http://jakewharton.github.io/butterknife/在"另一个用途是简化列表适配器内的视图持有者模式".部分.不幸的是,每次为列表中的每个项目创建ViewHolder时,我都会收到"无法注入视图"错误.

这是我的代码:

public class ButterknifeCustomBaseAdapter extends BaseAdapter{
@Override
public int getCount() {
    return arrayListNames.size();
}

@Override
public Name getItem(int iPosition) {
    return arrayListNames.get(iPosition);
}

@Override
public long getItemId(int iID) {
    return 0;
}

LayoutInflater inflater;
ArrayList<Name> arrayListNames = new ArrayList<Name>();
static Context context;
Activity activity;

public ButterknifeCustomBaseAdapter(Context context, ArrayList<Name> names, Activity activity) {
    arrayListNames = names;
    this.context = context;
    inflater = LayoutInflater.from(this.context);
}



static class ViewHolder implements View.OnClickListener {
    @InjectView(R.id.textViewFullName) TextView textViewFullName;
    @InjectView(R.id.imageButtonDeleteName) TextView imageButtonDeleteName; …
Run Code Online (Sandbox Code Playgroud)

java android annotations baseadapter butterknife

22
推荐指数
2
解决办法
2万
查看次数

Android:BaseAdapter和getLayoutInflater在单独的类文件中

现在填充我的GridViews我在每个Android活动(大多数是其中)上使用扩展的BaseAdapter类.

为了便于阅读和维护,我试图将所有BaseAdapter代码放在一个单独的类文件中.

要填充GridView,我正在使用LayoutInflater,这里的东西变得棘手......

由于getLayoutInflater()来自android.Activity,它只是不会做的伎俩.我尝试将我的Adapter.java(填充GridViews的类)扩展为Activity类,然后在内部创建BaseAdapter类(我现在这样做的方式),但我无法使其正常工作.

以下是Adapter.java的外观:

//Adapter.java
package com.cimp.matitec;

import greendroid.app.GDActivity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class Adapter extends GDActivity{

public class ImageAdapter extends BaseAdapter
{
   Context MyContext;
   int count;
   String[] nombre;

   public ImageAdapter(Context _MyContext, int n, String[] nombre)
   {
      MyContext = _MyContext;
      count = n;
      this.nombre = nombre;
   }

   public int getCount()
   {
                     /* Set the number of element we want on the grid */
      return count;
   } …
Run Code Online (Sandbox Code Playgroud)

android android-gridview baseadapter

21
推荐指数
2
解决办法
3万
查看次数

Listview android中的Edittext

我有Listview与editext和textview.

当我触摸edittext时,edittext失去焦点!

我通过设置解决了这个问题android:windowSoftInputMode="adjustPan"(AndroidManifest.xml).现在我触摸edittext而不是editext获得焦点但是应用程序标签和listview的一些原始消失(顶部).

当用户触摸edittext而不丢失应用程序标签和一些原始列表视图时,我想获得焦点.

我已实施的代码:

当用户触摸edittext时,下面的编码会得到关注,但当软键盘弹出时,应用程序标签和listview的一些原始消失.我想在用户触摸edittext时获得焦点,而不会丢失应用程序标签和一些原始列表视图.

1)的AndroidManifest.xml

<application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".MyListViewDemoActivity"
                  android:label="@string/app_name"
                  android:windowSoftInputMode="adjustPan"
                  >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

</application>
Run Code Online (Sandbox Code Playgroud)

2)raw_layout.xml

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <EditText android:id="@+id/mEditText"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  />  
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

3)main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<ListView android:id="@+id/mListView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

4)MyListViewDemoActivity

public class MyListViewDemoActivity extends Activity {
    private ListView mListView;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mListView=(ListView)findViewById(R.id.mListView); …
Run Code Online (Sandbox Code Playgroud)

android listview android-edittext convertview baseadapter

20
推荐指数
2
解决办法
4万
查看次数

检测BaseAdapter.notifyDataSetChanged()何时完成

我想知道什么时候BaseAdapter.notifyDataSetChanged()完成,然后做声音.我的代码:

BaseAdapter.notifyDataSetChanged();  
mScroller.startScroll(oldX, 0, dx, 0);
Run Code Online (Sandbox Code Playgroud)

mScrollernotifyDataSetChanged()完成之前滚动 .我想在完成后mScroller滚动到.oldXnotifyDataSetChanged()

请帮帮我,谢谢.

android baseadapter

19
推荐指数
2
解决办法
7137
查看次数

如何在ListView中处理多个倒计时器?

我有一个listview(带有自定义列表适配器),我需要在每一行显示一个倒计时.

例如,如果我的列表包含4个项目,我将有4行.此时,我需要处理4个不同的倒计时(每行一个),因为时间不同.

在此输入图像描述

到目前为止,我正在通过以下方式处理它:在自定义列表适配器中,在getView()方法内部,我创建一个新的CountDownTimer并在TextView中显示剩余时间.

但问题是它会大大减慢活动速度,在最坏的情况下我甚至无法正确滚动(因为每次显示一行时,它都会创建一个新的CountDownTimer).

我搜索了很多更好的解决方案,但没有人满意.

是否有更清洁,更流畅的解决方案来处理listView中的多个倒计时器?

谢谢

android listview countdown baseadapter countdowntimer

17
推荐指数
2
解决办法
2万
查看次数

使用GUID或字符串作为ID的hasStableIds适配器

我正在实现一个自定义ArrayAdapter<T>,我想将其设置hasStableIds为true.但我的T项的ID是字符串,getItemId方法返回long.

所以,我目前正在做的是:

@Override
public boolean hasStableIds() {
    return true;
}

@Override
public long getItemId(int position) {
    return this.getItem(position).getId().hashCode();
}
Run Code Online (Sandbox Code Playgroud)

getId()返回一个字符串.

这是使用String ID的正确解决方案吗?
特别是,对于这种情况,String Ids是GUID,有更好的选择吗?

android listview android-arrayadapter baseadapter

15
推荐指数
1
解决办法
1145
查看次数

我怎样才能使用baseadapter过滤listview

我试图过滤listview,但getfilter方法不起作用,

这是代码:

@Override
public void afterTextChanged(Editable s) {
}

@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
    mHistoryAdapter.getFilter().filter(s);   
}
Run Code Online (Sandbox Code Playgroud)

我已经在baseadapter中添加了该方法

public Filter getFilter() {
    return null;
}
Run Code Online (Sandbox Code Playgroud)

但它没有用......可以有人帮帮我.. @谢谢

search android baseadapter

14
推荐指数
2
解决办法
2万
查看次数

如何从适配器知道ListView的项目是否可见?

我有一个连接到ListView的适配器,例如

mJournalAdapter = new JournalAdapter();
journalEntryList.setAdapter(mJournalAdapter);
Run Code Online (Sandbox Code Playgroud)

我想知道我的内部JournalAdapter是否有一些视图(ListView项目)是否可见,是否可能?

android listview adapter baseadapter

13
推荐指数
2
解决办法
1万
查看次数

如何在Android中获取BaseAdapter的上下文

我有一个名为BinderData扩展的类BaseAdapter.我想获得基类上下文.我尝试使用,getContext()但在以下情况下不起作用BaseAdapter.

我怎样才能获得这堂课的背景?

android android-context baseadapter

13
推荐指数
3
解决办法
1万
查看次数