我正在开发一个我有ListView的功能,我希望listView只显示3个项目。我已将ListView高度设置为" wrap_content" ,并且在适配器中我已将 get count 设置为3,这样它只会显示3个项目,但它会显示只有1项。我无法弄清楚发生了什么。我的API只撤回3个项目,但无法显示ListView中的所有项目。
适配器代码:
public class Adapter3Testimonials extends BaseAdapter {
private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater = null;
private Context context;
public Adapter3Testimonials(Activity a, ArrayList<HashMap<String, String>> d) {
activity = a;
this.data = d;
context = a;
inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
return data.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(final int position, View convertView, ViewGroup parent) {
View itemView = inflater.inflate(R.layout.item_3_testimonials, parent, false);
TextView txtTestimonial = (TextView) itemView.findViewById(R.id.txtAdvisorTestimonails);
Log.e("TAG", "item_3_testimonials: " + position);
HashMap<String, String> testimonialsList;
testimonialsList = new HashMap<String, String>();
testimonialsList = data.get(position);
txtTestimonial.setText(testimonialsList.get("description"));
return itemView;
}
}
XML:
<RelativeLayout 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">
<ScrollView
android:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp10"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp5">
<FrameLayout
android:id="@+id/layImageProfile"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/dp5"
android:background="@drawable/half_blue_circle">
<de.hdodenhof.circleimageview.CircleImageView xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/profile_image"
android:layout_width="@dimen/dp80"
android:layout_height="@dimen/dp80"
android:padding="@dimen/dp2"
android:src="@drawable/blank_profile" />
<de.hdodenhof.circleimageview.CircleImageView xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/profile_image2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher_background"
android:visibility="gone"
app:civ_border_width="2dp" />
<ImageView
android:id="@+id/imgBlockUser"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/profile_image2"
android:layout_gravity="right"
android:src="@drawable/phone" />
</FrameLayout>
<TextView
android:id="@+id/txtName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginLeft="@dimen/dp13"
android:layout_toRightOf="@+id/layImageProfile"
android:text="John doe"
android:textColor="@android:color/black"
android:textSize="@dimen/dp15" />
<TextView
android:id="@+id/txtFirmName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/txtName"
android:layout_alignStart="@id/txtName"
android:layout_below="@id/txtName"
android:text="Demo Corp. Inc."
android:textColor="@android:color/black" />
<TextView
android:id="@+id/txtRnf"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/txtFirmName"
android:layout_alignStart="@id/txtFirmName"
android:layout_below="@id/txtFirmName"
android:text="Rnf No #12234"
android:textColor="@android:color/black" />
<com.iarcuschin.simpleratingbar.SimpleRatingBar
android:id="@+id/imgReviewStarts"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/txtRnf"
android:layout_below="@id/txtRnf"
android:layout_marginTop="@dimen/dp5"
android:layout_toRightOf="@id/layImageProfile"
app:srb_borderColor="@color/colorPrimary"
app:srb_fillColor="@color/colorPrimary"
app:srb_isIndicator="true"
app:srb_numberOfStars="5"
app:srb_starBorderWidth="1.0"
app:srb_starCornerRadius="2.5"
app:srb_starSize="@dimen/dp15"
app:srb_stepSize="1" />
<ImageView
android:id="@+id/imgClickToConnect"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="@dimen/dp25"
android:src="@drawable/click" />
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="@dimen/dp1"
android:layout_marginTop="@dimen/dp10"
android:background="@color/colorPrimary" />
<TextView
android:id="@+id/txtStatement"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp5"
android:background="@color/colorPrimary"
android:paddingBottom="@dimen/dp5"
android:paddingLeft="@dimen/dp5"
android:paddingTop="@dimen/dp3"
android:text="Mission statement Lorum ipsum dolar sit or elit lamet,consector cillium"
android:textColor="@android:color/white" />
<View
android:layout_width="match_parent"
android:layout_height="@dimen/dp1"
android:layout_marginTop="@dimen/dp5"
android:background="@color/colorPrimary" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp5"
android:paddingLeft="@dimen/dp10"
android:text="@string/customer_review_score"
android:textColor="@android:color/black"
android:textSize="@dimen/dp15" />
<ProgressBar
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/dp10"
android:progress="100"
android:progressTint="@android:color/black" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp10"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/buying_exp" />
<com.iarcuschin.simpleratingbar.SimpleRatingBar
android:id="@+id/imgBuyingExp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/txtRnf"
android:layout_marginLeft="@dimen/dp20"
app:srb_borderColor="@color/colorPrimary"
app:srb_fillColor="@color/colorPrimary"
app:srb_isIndicator="true"
app:srb_numberOfStars="5"
app:srb_starBorderWidth="1.0"
app:srb_starCornerRadius="2.5"
app:srb_starSize="@dimen/dp15"
app:srb_stepSize="1" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp10"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/knowledge_comp" />
<com.iarcuschin.simpleratingbar.SimpleRatingBar
android:id="@+id/imgKnowledgeComp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/txtRnf"
android:layout_marginLeft="@dimen/dp20"
app:srb_borderColor="@color/colorPrimary"
app:srb_fillColor="@color/colorPrimary"
app:srb_isIndicator="true"
app:srb_numberOfStars="5"
app:srb_starBorderWidth="1.0"
app:srb_starCornerRadius="2.5"
app:srb_starSize="@dimen/dp15"
app:srb_stepSize="1" />
</LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp10"
android:orientation="horizontal"
android:weightSum="1">
<TextView
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.9"
android:text="@string/percentage_of_customer" />
<TextView
android:id="@+id/txtPercentageRecommended"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="@dimen/dp20"
android:layout_toRightOf="@id/txt"
android:text="100%" />
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="@dimen/dp1"
android:layout_marginTop="@dimen/dp10"
android:background="@color/colorPrimary" />
<LinearLayout
android:id="@+id/layTestimonials"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp5"
android:background="@color/colorPrimary"
android:orientation="vertical">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/dp10"
android:paddingTop="@dimen/dp10"
android:text="@string/customer_testimonials"
android:textColor="@android:color/white"
android:textSize="@dimen/dp15" />
<TextView
android:id="@+id/btnTestimonialNumber"
android:layout_width="@dimen/dp35"
android:layout_height="@dimen/dp35"
android:layout_gravity="center_vertical"
android:layout_marginLeft="@dimen/dp10"
android:layout_marginTop="@dimen/dp5"
android:layout_toRightOf="@id/textView"
android:background="@drawable/round_button"
android:padding="@dimen/dp5"
android:text=""
android:textAlignment="center"
android:textColor="@color/colorPrimary" />
<ProgressBar
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/textView"
android:paddingLeft="@dimen/dp10"
android:progress="100"
android:progressTint="@android:color/white" />
</RelativeLayout>
<TextView
android:id="@+id/noTestimonial"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="@dimen/dp20"
android:layout_marginTop="@dimen/dp20"
android:gravity="center"
android:text="@string/no_testimonials"
android:textColor="@android:color/white"
android:visibility="gone" />
<ListView
android:id="@+id/listCustomer_testimonial"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp10"
android:layout_marginTop="@dimen/dp10"
android:divider="@android:color/white">
</ListView>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="@dimen/dp1"
android:layout_marginTop="@dimen/dp5"
android:background="@color/colorPrimary" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp10"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/dp5"
android:text="Years of experience:"
android:textColor="@android:color/black" />
<TextView
android:id="@+id/txtAdExperience"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp8"
android:text="2" />
</LinearLayout>
<TextView
android:id="@+id/txtExpertise"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/dp5"
android:text="@string/expertise"
android:textColor="@android:color/black"
android:visibility="gone" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="@dimen/dp5"
android:orientation="horizontal">
<TextView
android:id="@+id/btnProtect_money"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp5"
android:background="@drawable/bg_skyblue"
android:padding="@dimen/dp5"
android:text="@string/protect_money"
android:textAllCaps="false"
android:textColor="@android:color/white"
android:visibility="gone" />
<TextView
android:id="@+id/btnGrow_money"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp5"
android:background="@drawable/bg_skyblue"
android:padding="@dimen/dp5"
android:text="@string/grow_money"
android:textColor="@android:color/white"
android:visibility="gone" />
<TextView
android:id="@+id/btnMedical_Needs"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp5"
android:background="@drawable/bg_skyblue"
android:padding="@dimen/dp5"
android:text="@string/medical_need"
android:textColor="@android:color/white"
android:visibility="gone" />
</LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="@dimen/dp15"
android:layout_marginLeft="@dimen/dp10"
android:layout_marginTop="@dimen/dp10">
<TextView
android:id="@+id/txtSocialMedia"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/find_me_on_social_media"
android:textColor="@android:color/black"
android:textSize="@dimen/dp15" />
<ImageView
android:id="@+id/imgFB"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/txtSocialMedia"
android:layout_marginTop="@dimen/dp10"
android:src="@drawable/fb_icon" />
<ImageView
android:id="@+id/imgYoutube"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/txtSocialMedia"
android:layout_marginLeft="@dimen/dp5"
android:layout_marginTop="@dimen/dp10"
android:layout_toRightOf="@id/imgFB"
android:src="@drawable/youtube_icon" />
<ImageView
android:id="@+id/imgLinkden"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/txtSocialMedia"
android:layout_marginLeft="@dimen/dp5"
android:layout_marginTop="@dimen/dp10"
android:layout_toRightOf="@id/imgYoutube"
android:src="@drawable/linkedin_icon" />
<ImageView
android:id="@+id/imgRSS"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/txtSocialMedia"
android:layout_marginLeft="@dimen/dp5"
android:layout_marginTop="@dimen/dp10"
android:layout_toRightOf="@id/imgLinkden"
android:src="@drawable/rss_icon" />
<ImageView
android:id="@+id/imgCartoon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_toRightOf="@id/txtSocialMedia"
android:src="@drawable/man_after_feedback" />
<ImageView
android:id="@+id/imgRead_my_articles"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_below="@id/imgFB"
android:layout_marginTop="@dimen/dp10"
android:src="@drawable/read_my_articles" />
<ImageView
android:id="@+id/imgClick_for_feedback"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@id/imgFB"
android:layout_marginRight="@dimen/dp10"
android:layout_marginTop="@dimen/dp10"
android:src="@drawable/click_for_feedback" />
</RelativeLayout>
</LinearLayout>
</ScrollView>
<ProgressBar
android:id="@+id/pBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:visibility="gone" />
在此代码中,我有一个带有id&#34; listCustomer_testimonial&#34;的ListView。
答案 0 :(得分:0)
问题不在于getCount()
方法或列表项数。
您在listview
内使用了scrollview
,因此只有一个项目可见,其他项目可以滚动显示。
您可以使用自定义Listview
来避免列表视图的高度问题,
public class NonScrollableListview extends ListView {
public NonScrollableListview(Context context) {
super(context);
}
public NonScrollableListview(Context context, AttributeSet attrs) {
super(context, attrs);
}
public NonScrollableListview(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int heightMeasureSpec_custom = MeasureSpec.makeMeasureSpec(
Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, heightMeasureSpec_custom);
ViewGroup.LayoutParams params = getLayoutParams();
params.height = getMeasuredHeight();
}
}
在你的xml中,
<com.yourpack.NonScrollableListview
android:id="@+id/list_detail"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
或者NestedScrollView
使用RecyclerView
代替listview。
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:fillViewport="true">
<!--otherviews-->
<android.support.v7.widget.RecyclerView
android:id="@+id/list_detail"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<!--otherviews-->
</android.support.v4.widget.NestedScrollView>
答案 1 :(得分:0)
永远不要在Scrollview中使用ListView。但是如果你必须在ScrollView中使用ListView创建一个scrollhandler。
class ScreensaverWindow(xbmcgui.WindowXMLDialog):
def onInit(self):
xbmcgui.WindowXML.onInit(self)
self.volumeCtrl = None
# Get the videos to use as a screensaver
playlist = self.imagelist()
thread = ImgVideoUpdate(data=self.imagelist)
thread.start()
然后最后使用Handler绑定ListView
public class scrollhandler {
public static void getListViewSize(ListView myListView) {
ListAdapter myListAdapter = myListView.getAdapter();
if (myListAdapter == null) {
//do nothing return null
return;
}
//set listAdapter in loop for getting final size
int totalHeight = 0;
int rowheight=56;
for (int size = 0; size < myListAdapter.getCount(); size++) {
View listItem = myListAdapter.getView(size, null, myListView);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
rowheight=listItem.getMeasuredHeight();
}
//setting listview item in adapter
ViewGroup.LayoutParams params = myListView.getLayoutParams();
params.height = totalHeight + (myListView.getDividerHeight() * (myListAdapter.getCount() - 1));
myListView.setLayoutParams(params);
// print height of adapter on log
Log.i("height of listItem:", String.valueOf(totalHeight)+","+myListAdapter.getCount());
}
}