标签: baseadapter

为什么ViewPager和GridLayout与30个元素非常慢?

我有一个ViewPager和一个GridView显示月历.将GridView有大约30种元素和刷卡左,右是很慢的.我做了一个示例项目来测试没有任何数据库访问,它也很慢.也许有人看到了问题,或者我是否必须对页面进行异步加载?

这是一个元素的布局GridView.我想在任何元素中显示9个小的5x5像素图标,但没有它们,它也很慢.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/Layout1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:padding="1dp">
  <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content">
    <TextView android:id="@+id/date" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginLeft="5dp" android:gravity="center_vertical" android:textSize="14sp" android:textStyle="bold"/>
  </LinearLayout>
  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ffffff">
    <ImageView android:id="@+id/dot1" android:layout_width="wrap_content" android:drawingCacheQuality="auto" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:background="#ffffff" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:paddingBottom="1dp" android:paddingLeft="1dp" android:paddingTop="5dp"/>
  </RelativeLayout>
  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ffffff">
    <ImageView android:id="@+id/dot2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:background="#ffffff" android:paddingBottom="1dp" android:paddingLeft="1dp"/>
  </RelativeLayout>
  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ffffff">
    <ImageView android:id="@+id/dot3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_gravity="right" android:background="#ffffff" …
Run Code Online (Sandbox Code Playgroud)

performance android gridview baseadapter android-viewpager

7
推荐指数
1
解决办法
3143
查看次数

从自定义基本适配器单击按钮启动对话框片段> getView [IMG INCLUDED]

好吧,所以我有一个列表(也是一个片段对话框),显示一个用户朋友,该列表中的每个项目都有一个按钮(在图片中标记为朋友),当用户点击该按钮ID时,显示另一个显示的片段对话框与该用户交互的所有选项(朋友请求,阻止,发送私人消息等)问题是这个按钮及其onClick监听器目前是通过覆盖我的listview适配器getView方法实现的,并创建一个fragmentDialog需要访问权限片段管理器.有没有办法使这项工作?

编辑:我不能发布项目的实际代码,但我已经附加了一个简化的基本适配器w.onClickListener应该清楚我想要做什么.我无法从基本适配器类访问fragmentManager以使对话框片段成为可能

LazyAdapter.java
package com.example.androidhive;

import java.util.ArrayList;
import java.util.HashMap;

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.ImageView;
import android.widget.TextView;

public class LazyAdapter extends BaseAdapter {

    private Activity activity;
    private ArrayList&lt;HashMap&lt;String, String&gt;&gt; data;
    private static LayoutInflater inflater=null;
    public ImageLoader imageLoader;

    public LazyAdapter(Activity a, ArrayList&lt;HashMap&lt;String, String&gt;&gt; d) {
        activity = a;
        data=d;
        inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        imageLoader=new ImageLoader(activity.getApplicationContext());
    }

    public int getCount() {
        return data.size();
    }

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

    public long getItemId(int …
Run Code Online (Sandbox Code Playgroud)

android listview button baseadapter android-dialogfragment

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

如何在android中获取listview特定项的id?

我正在使用Listview并设置多个项目,每个项目都有喜欢,分享和评论选项.其实我有获取项目编号以及还setTextTextView,它的成功.但是无法在特定项目的Like Button Click事件上获得Item Id.如何在每一个项目获取项目标识ListviewButtonClick事件?

MyAdapter类的演示:

public class Adapter1 extends BaseAdapter implements OnClickListener {
    public ArrayList<HashMap<String, String>> arr = null;
    Context context = null;
    LayoutInflater layoutInflater = null;
    HashMap<String, String> getData = new HashMap<String, String>();

    String urlLike = null;
    TextView strId = null;

    public NewsFeedAdapter(Context context,
            ArrayList<HashMap<String, String>> arr) {
        this.context = context;
        this.arr= arr;
        layoutInflater = LayoutInflater.from(context);
    }

    @Override
    public int getCount() {
        return arr.size();
    }

    @Override
    public Object getItem(int …
Run Code Online (Sandbox Code Playgroud)

android listview baseadapter

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

带有Coundown计时器的ListView.滚动列表视图时,计时器闪烁

在我的应用程序中,我必须显示listview中每个项目的倒数计时器.我已经能够这样做了CountDownTimer.但是,问题是当向上或向下滚动列表视图时,计时器开始闪烁.搜索了很多,但无法得到解决方案.

我的适配器类

public class BuyListingListAdapter extends BaseAdapter  {

private Context mContext;
private ArrayList<VehicleAttributes> mVehicleList = new ArrayList<VehicleAttributes>();
private Date currentDate;
//Saving position in map to check if timer has been    //started for this row
private HashMap<Integer, Boolean> timerMap = new HashMap<Integer, Boolean>();

public BuyListingListAdapter(Context context,
        ArrayList<VehicleAttributes> vehicleList, boolean showGridView) {
    this.mContext = context;
    this.mVehicleList = vehicleList;
    this.showGridView = showGridView;
    currentDate = new Date(System.currentTimeMillis());

    int listSize = mVehicleList.size();
    for (int i = 0; i < listSize; i++)
        timerMap.put(i, false); …
Run Code Online (Sandbox Code Playgroud)

android baseadapter countdowntimer

7
推荐指数
1
解决办法
689
查看次数

使用ViewPager滑动时,Fragment不会调用OnResume()

解释我的问题:

我花了很多时间,但我不能让它工作.我在主要的activty中使用(Tabhost)包含三个片段的视图寻呼机.我的ViewPagerAdapter类扩展FragmentStatePagerAdapter.

OnResume()当我滑动View时,我面临的问题是没有调用我的方法.我想在刷卡时更新viewpager片段的视图.

我的OnResume()方法仅在我单击该ListView项目并再次返回时调用.但是当我在ListView上按OnLongClick时,其他片段不会刷新.

注意:我知道这个问题之前是问过,但这些解决方案都没有帮助我.

注2:当我的手机进入睡眠状态时,解锁手机第二个片段后调用onResume()

OnResume()在第一个标签中的方法:

 @Override
public void onResume() {
    super.onResume();

    adapterLogin.notifyDataSetChanged();
}
Run Code Online (Sandbox Code Playgroud)

我的OnResume()方法在第二个标签中:

 @Override
public void onResume() {
    super.onResume();
   adapterLogin.UpdateView(databaseHelper.getAllVoitureFavourite(1,username));
   adapterLogin.notifyDataSetInvalidated();
   adapterLogin.notifyDataSetChanged();


}
Run Code Online (Sandbox Code Playgroud)

我的UpdateView()方法BaseAdapter:

public void UpdateView(List<Voiture> items) {
    this.voitureList = items;
    notifyDataSetInvalidated();
    notifyDataSetChanged();

}
Run Code Online (Sandbox Code Playgroud)

我的应用程序的屏幕截图更多了解mu问题:

在此输入图像描述

任何帮助将不胜感激.

android onresume android-fragments baseadapter android-studio

7
推荐指数
1
解决办法
2432
查看次数

Android:ListView没有刷新notifyDataSetChanged();

我在主要活动中有一个自定义BaseAdapter和一个添加按钮.该按钮打开一个带有文本框的对话框,您可以通过该方式向列表中添加新元素.问题是列表没有刷新.在onActivityResult()函数中,我打印列表中的元素数量,每次在对话框中点击"确定"时,数字都会增加,所以我知道这只是刷新不起作用.我的BaseAdapter和我的活动:

class ListaOrase extends BaseAdapter{
    private Activity context;
    ArrayList<String> orase;

    public ListaOrase(Activity context){
        this.context=context;
        orase=new ArrayList<String>();
    }
    public void add(String string){
        orase.add(string);
        this.notifyDataSetChanged();
    }

    public View getView (int position, View convertView, ViewGroup list)  {
        View element;
        if (convertView == null)
        {
         LayoutInflater inflater = context.getLayoutInflater();
         element = inflater.inflate(R.layout.lista, null);
        }
        else element = convertView;
        TextView elementLista=(TextView)element.findViewById(R.id.elementLista);    
        elementLista.setText(orase.get(position));
        return element;
    }

}

public class WeatherAppActivity extends ListActivity {

    Button buton;
    ListaOrase lista;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        lista=new …
Run Code Online (Sandbox Code Playgroud)

android listview baseadapter

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

ListView,BaseAdapter,getViewTypeCount() - 如何强制适配器再次检查getViewTypeCount()?

我正在使用自己BaseAdapter (standingsListAdapter)ListView (standingsLV).当我设置适配器时:

standingsLV.setAdapter(standingsListAdapter);
Run Code Online (Sandbox Code Playgroud)

getViewTypeCount()叫做.但是后来,当我在适配器中设置新数据时:

standingsListAdapter.setData(data);
Run Code Online (Sandbox Code Playgroud)

setData(data)设置新数据调用之后notifyDataSetChanged():

public void setData(StandingsModelWrapper data) {
    groupsData.clear();
    if (data != null) {
        groupsData.addAll(data.getModel());
    }
    notifyDataSetChanged();
}
Run Code Online (Sandbox Code Playgroud)

方法getViewTypeCount()不再被调用.为什么? 如何强制适配器再次检查getViewTypeCount()?


我为什么需要这个?

  • 我在列表的每一行显示表格.表有不同的长度(行数).
  • 我想在适配器中设置新数据,这样可以改变表的长度

这就是为什么每次新数据到达列表适配器时都应该重新计算我的视图类型的数量.

android listview adapter android-listview baseadapter

6
推荐指数
1
解决办法
1653
查看次数

自定义日历和日历适配器

我有一个自定义日历,从这里看到的修改.在初始加载时,它会显示所有内容.

但是我有两个问题.

1.)在上个月的按钮上,按照预期从8月到7月,但它并没有清除所有图像.

2.)从7月到8月,它将在7月停留并重新安排日期.

BaseAdapter:

public class CalendarAdapter extends BaseAdapter {
    private Context mContext;
    private java.util.Calendar month;
    public GregorianCalendar pmonth; // calendar instance for previous month
    public GregorianCalendar pmonthmaxset;
    private GregorianCalendar selectedDate;
    public static List<String> dayString;
    private List<String[]> anArrayOfStrings = new ArrayList<String[]>();
    int firstDay, maxWeeknumber, maxP, calMaxP, lastWeekDay, leftDays, mnthlength;
    String itemvalue, curentDateString;
    DateFormat df;
    ImageView mimgPeriod, mimgEnergy, mimgIntercorse, mimgPregancy, mimgHeadache, mimgMood;
    DateFormat formatter;
    Date rowdatetemp;
    Date caldatetemp;
    String box;
    private int mHeight = 0;
    private int mWidth …
Run Code Online (Sandbox Code Playgroud)

android baseadapter

6
推荐指数
1
解决办法
6196
查看次数

片段中带有Gridview的Android ImageAdapter

我有一个gridview适配器作为活动.我现在试图将它放在片段中并转换成东西,但它不起作用.当我在我的Activity中包含IconFragmentSystem时,当我尝试打开Activity时,我会收到一个强制关闭.

我知道活动有效,因为我可以使用其他碎片,一切都很好,所以我知道我的问题在于这个文件.

package com.designrifts.ultimatethemeui;
import com.designrifts.ultimatethemeui.R;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.*;

import java.util.ArrayList;

public class IconFragmentSystem extends Fragment implements AdapterView.OnItemClickListener{
private static final String RESULT_OK = null;
public Uri CONTENT_URI;

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.main, container, false);

    super.onCreate(savedInstanceState);
    int iconSize=getResources().getDimensionPixelSize(android.R.dimen.app_icon_size);

    GridView gridview = (GridView) getActivity().findViewById(R.id.icon_grid);
    gridview.setAdapter(new IconAdapter(this, iconSize));
    gridview.setOnItemClickListener(this);
    CONTENT_URI=Uri.parse("content://"+iconsProvider.class.getCanonicalName());
    return view;
}

@Override
public void onItemClick(AdapterView<?> …
Run Code Online (Sandbox Code Playgroud)

java android gridview adapter baseadapter

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

尝试在空对象引用上调用虚方法'android.content.Context android.support.v4.app.FragmentActivity.getApplicationContext()'

以下是我的片段代码,我得到上述null异常错误

 /**
  * Created by USer on 09-04-2016.
  */
 public class FeaturedFragment extends android.support.v4.app.Fragment {
     private List url;
     private SliderLayout sliderLayout;
     private GridView gridView;
     private int firstVisiblepos;
     AppnextAPI api;

     @Nullable
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
         View rootView = inflater.inflate(
                 R.layout.featured, container, false);
         url = new ArrayList<String>();
         url.add("http://192.168.5.51/Wallpapers/Autumn.jpg");
         url.add("http://192.168.5.51/Wallpapers/Tree.jpg");
         url.add("http://192.168.5.51/Wallpapers/Flower.jpg");
         url.add("http://192.168.5.51/Wallpapers/Lion.jpg");
         api = new AppnextAPI(getActivity(), "my id");
         sliderLayout = (SliderLayout) rootView.findViewById(R.id.slider);
         gridView = (GridView) rootView.findViewById(R.id.gridView);
         ThemeShowcase theme = new ThemeShowcase();
         theme.execute("getThemes");
         for (int i = 0; …
Run Code Online (Sandbox Code Playgroud)

android nullpointerexception android-fragments baseadapter

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