2

当我的活动在三星 Galaxy Y 和 Ace Plus 上加载时 - mDPI/Ldpi 屏幕。列表视图文本和内容不加载。在触摸并尝试滚动内容时出现。

但它在我的开发手机三星 S2 上完美运行

经过一些测试,我发现这只发生在 2.X 版本的 Android 上。

在此处输入图像描述

在此处输入图像描述

MainActivity.java

private final String[] places = new String[] { "Mysore", "Bangalore",
        "Mangalore", "Wayanad", "Bandipur National Park National Park",
        "Chickmaglur", "Bandipura", "Coorg", "Kodaikanal", "Hampi",
        "Ghati Subramanya", "Mekedatu", "Muththathhi", "Shivasamudram",
        "Talakadu", "Savana Durga" };

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

    context = this;

    Log.i("Nomad", "onCreate");

    List<Place> thePlaces = new ArrayList<Place>();
    for (int i = 0; i < places.length; i++) {
        Place pl = new Place("NO_ID", places[i], "NO_DISTANCE",
                "NO_CATEGORYICON");
        thePlaces.add(pl);
    }

    listView = (ListView) findViewById(R.id.place_list);
    listView.setEmptyView(findViewById(R.id.empty));

    adapter = new PlacesListAdapter(MainActivity.this,
            R.layout.list_item_place, thePlaces);

    listView.setAdapter(adapter);
    listView.setTextFilterEnabled(true);

    mSearchView = (SearchView) findViewById(R.id.action_search);

    listView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> a, View view, int position,
                long id) {

            startActivity(new Intent(MainActivity.this, PlaceActivity.class));
        }
    });

}

PlacesListAdapter.java

public class PlacesListAdapter extends ArrayAdapter<Place> implements
        Filterable {
    public Context context;
    private List<Place> orig, itemDetailsrrayList;
    private PlaceFilter filter;

    public PlacesListAdapter(Context context, int textViewResourceId) {
        super(context, textViewResourceId);
    }

    public PlacesListAdapter(Context context, int resource, List<Place> places) {
        super(context, resource, places);
        this.context = context;
        // this.places = places;

        itemDetailsrrayList = places;
        orig = new ArrayList<Place>(itemDetailsrrayList);

        filter = new PlaceFilter();
        // imageLoader = new ImageLoader(context.getApplicationContext());

    }

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

    public Place getItem(int position) {
        return itemDetailsrrayList.get(position);
    }

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

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

        ViewHolder holder;
        // View view = convertView;
        // Place p = places.get(position);

        if (convertView == null) {
            LayoutInflater viewInflater;
            viewInflater = LayoutInflater.from(getContext());
            convertView = viewInflater.inflate(R.layout.list_item_place, null);

            holder = new ViewHolder();
            holder.placeTitle = (TextView) convertView
                    .findViewById(R.id.place_title);
            holder.placeDistance = (TextView) convertView
                    .findViewById(R.id.place_distance);
            holder.placeCategoryIcon = (ImageView) convertView
                    .findViewById(R.id.place_category_icon);

            convertView.setTag(holder);

        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        holder.placeTitle.setText(itemDetailsrrayList.get(position)
                .getPlaceTitle());
        holder.placeDistance.setText("200");
        holder.placeCategoryIcon.setImageResource(R.drawable.icon_category);

        // Setting Alternative Row Colors
        if (position % 2 == 0) {
            convertView.setBackgroundResource(R.drawable.list_view_place_row_1);
        } else {
            convertView.setBackgroundResource(R.drawable.list_view_place_row_2);
        }

        return convertView;
    }

    static class ViewHolder {
        TextView placeId;
        TextView placeTitle;
        TextView placeDistance;
        ImageView placeCategoryIcon;
    }

    @Override
    public Filter getFilter() {
        // TODO Auto-generated method stub
        return filter;
    }

    private class PlaceFilter extends Filter {

        @Override
        protected FilterResults performFiltering(CharSequence constraint) {
            FilterResults oReturn = new FilterResults();
            ArrayList<Place> results = new ArrayList<Place>();
            if (orig == null)
                orig = itemDetailsrrayList;
            if (constraint != null) {
                if (orig != null && orig.size() > 0) {
                    for (Place g : orig) {
                        if (g.getPlaceTitle()
                                .toLowerCase()
                                .startsWith(constraint.toString().toLowerCase()))
                            results.add(g);
                    }
                }
                oReturn.values = results;
            }
            return oReturn;
        }

        @SuppressWarnings("unchecked")
        @Override
        protected void publishResults(CharSequence constraint,
                FilterResults results) {
            itemDetailsrrayList = (ArrayList<Place>) results.values;
            notifyDataSetChanged();
        }

    }
}

aactivity_main.xml

<?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:background="@color/primary_white"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/place_list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:cacheColorHint="#00000000"
        android:fadingEdge="none" >
    </ListView>

    <TextView
        android:id="@+id/empty"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:padding="20dp"
        android:text="@string/list_view_place_empty"
        android:textColor="@color/black"
        android:textSize="18sp" />

</LinearLayout>

列表视图行 XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingBottom="10dp"
    android:paddingTop="10dp" >

    <ImageView
        android:id="@+id/place_category_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:contentDescription="ss"
        android:paddingLeft="10dp"
        android:paddingRight="15dp"
        android:src="@drawable/icon_category" />

    <TextView
        android:id="@+id/place_distance"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:paddingRight="15dp"
        android:text="320" />

    <TextView
        android:id="@+id/place_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_toRightOf="@+id/place_category_icon"
        android:ellipsize="end"
        android:paddingRight="50dp"
        android:singleLine="true"
        android:text="Place Name"
        android:textColor="#191919"
        android:textSize="18sp" />

</RelativeLayout>

在 Logcat 中找到了这个

12-23 19:58:28.033: E/ResourceType(631): Style contains key with bad entry: 0x010102f3
12-23 19:58:28.083: E/ResourceType(631): Style contains key with bad entry: 0x0101030b
12-23 19:58:28.083: E/ResourceType(631): Style contains key with bad entry: 0x0101039c
12-23 19:58:28.083: E/ResourceType(631): Style contains key with bad entry: 0x010103e1
12-23 19:58:31.852: E/ResourceType(631): Style contains key with bad entry: 0x010102f3
12-23 19:58:31.852: E/ResourceType(631): Style contains key with bad entry: 0x0101030b
12-23 19:58:31.852: E/ResourceType(631): Style contains key with bad entry: 0x0101039c
12-23 19:58:31.852: E/ResourceType(631): Style contains key with bad entry: 0x010103e1
12-23 19:58:31.934: I/Nomad(631): onCreate
12-23 19:58:32.074: I/Nomad(631): onCreateOptionsMenu
12-23 19:58:32.144: D/dalvikvm(631): GC_EXTERNAL_ALLOC freed 140K, 50% free 2834K/5639K, external 2844K/2844K, paused 59ms
12-23 19:58:32.264: I/Nomad(631): after setupSearchView()
12-23 19:58:32.264: W/KeyCharacterMap(631): No keyboard for id -1
12-23 19:58:32.264: W/KeyCharacterMap(631): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
12-23 19:58:32.473: D/dalvikvm(631): GC_EXTERNAL_ALLOC freed 41K, 50% free 2847K/5639K, external 3060K/3369K, paused 60ms

颜色.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <color name="white">#FFFFFF</color>
    <color name="black">#333333</color>
    <color name="primary_white">#f2f2f2</color>
    <color name="dark_bg">#161616</color>

    <!-- Place List View -->
    <color name="list_view_place_row_1">#f2f2f2</color>
    <color name="list_view_place_row_2">#e7e7e7</color>
    <color name="list_view_place_selected">#CFCFCF</color>

    <!-- Place List View -->
    <color name="primary_color">#E5492A</color>
    <color name="primary_color_inverse">#c33518</color>

</resources>

样式.xml

<resources xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- Nomad Theme -->
    <style name="Theme.Nomad" parent="Theme.Sherlock.Light">
        <item name="android:actionBarStyle">@style/Widget.Nomad.ActionBar</item>
        <item name="actionBarStyle">@style/Widget.Nomad.ActionBar</item>
        <item name="android:actionBarItemBackground">@drawable/actionbar_selectable_background</item>
        <item name="actionBarItemBackground">@drawable/actionbar_selectable_background</item>
        <item name="android:actionBarTabStyle">@style/MyActionBarTabStyle</item>
        <item name="actionBarTabStyle">@style/MyActionBarTabStyle</item>
        <item name="android:homeAsUpIndicator">@drawable/abs__ic_ab_back_holo_light</item>
        <item name="homeAsUpIndicator">@drawable/abs__ic_ab_back_holo_light</item>
        <item name="*android:actionModeShareDrawable">@drawable/ic_menu_share</item>
        <item name="actionModeShareDrawable">@drawable/ic_menu_share</item>
        <item name="searchViewSearchIcon">@drawable/ic_menu_search</item>
    </style>

    <style name="Widget.Nomad.ActionBar" parent="Widget.Sherlock.ActionBar">
        <item name="android:background">#E5492A</item>
        <item name="background">#E5492A</item>
        <item name="android:titleTextStyle">@style/TitleText</item>
        <item name="titleTextStyle">@style/TitleText</item>
    </style>

    <style name="TitleText" parent="TextAppearance.Sherlock.Widget.ActionBar.Title">
        <item name="android:textColor">@color/white</item>
    </style>

    <style name="MyActionBarTabStyle" parent="Widget.Sherlock.Light.ActionBar.TabBar">
        <item name="android:background">@drawable/actionbar_tab_bg</item>
        <item name="android:textAlignment">center</item>
        <item name="android:gravity">center</item>
    </style>

</resources>
4

2 回答 2

2

请尝试将此属性添加到您的 xml 中的 ListView

android:cacheColorHint = "@android:color/transparent"

并删除黑色区域, android:fadingEdge="none"在您的ListView

于 2012-12-23T09:23:27.027 回答
1

嗨@Harsha,我尝试了一些基本功能的代码,并且在我的 Galaxy Y 上一切正常。可能是你的 color.xml 文件引起了一些问题。你可以下载这个测试项目,看看它是否有帮助。

于 2012-12-24T12:30:58.223 回答