ViewList项目分隔符为Progressbar

时间:2014-03-15 23:45:29

标签: android progress-bar divider

我想在列表项目中添加一个“ProgressBar”(就像Chrome中的Android一样,当你加载一个新网页时),它将显示当前课程的进度。 (这是关于学校的一个应用程序,所有安排)。

目前我有(截图有点过时,我已设法通过this修复得到最后一个分隔符):

enter image description here

在每个项目后,您会在屏幕截图上看到一个分隔线,一条灰线。我想用进度条替换这个(不是所有的分隔符,只有一个。当你加载新的网页时,与Android的Chrome相同的进度条)。我怎么能这样做?

我目前的ScheduleAdapter:

package nl.devapp.ictcollege.adapters;

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

import java.util.List;

import nl.devapp.ictcollege.R;
import nl.devapp.ictcollege.models.Schedule;

public class ScheduleAdapter extends BaseAdapter {

    private LayoutInflater inflater;
    private List<Schedule> items;

    public ScheduleAdapter(Context context, List<Schedule> list) {
        this.items = list;
        this.inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public int getCount() {
        if (this.items == null || this.items.isEmpty()) {
            return 0;
        } else {
            return this.items.size();
        }
    }

    @Override
    public Schedule getItem(int position) {
        return this.items.get(position);
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = convertView;
        if (convertView == null)
            view = this.inflater.inflate(R.layout.row_schedule, null);

        Schedule item = this.getItem(position);

        TextView number = (TextView) view.findViewById(R.id.item_number);
        TextView lesson = (TextView) view.findViewById(R.id.item_lesson);
        TextView to = (TextView) view.findViewById(R.id.item_to);
        TextView classRoom = (TextView) view.findViewById(R.id.item_class_room);

        number.setText(Integer.toString(item.getHour()));
        lesson.setText(item.getLesson());
        to.setText(item.getTo());
        classRoom.setText(item.getClassRoom());

        return view;
    }
}

和我的FragmentSchedule xml(我创建ListView):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="nl.devapp.ictcollege.fragments.SelectFragment">

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/rooster_list"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:footerDividersEnabled="true"
        android:layout_alignParentStart="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:id="@+id/last_sync"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true" />

</RelativeLayout>

我的row_schedule:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:paddingBottom="10dp"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:paddingTop="10dp" >

    <TextView
        android:id="@+id/item_number"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" />

    <TextView
        android:id="@+id/item_class_room"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true" />

    <TextView
        android:id="@+id/item_lesson"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="20dp"
        android:layout_toRightOf="@+id/item_number" />

    <TextView
        android:id="@+id/item_to"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />

</RelativeLayout>

谢谢!

1 个答案:

答案 0 :(得分:1)

我很确定不可能为不同的列表项设置不同的分隔符(将分隔符设置为整个ListView,而不是项目本身)。 我只需在ProgressBar中添加row_schedule,即可将其设置为gone。在适配器的getView方法中,检查该行是否是您要显示ProgressBar的行,并将其设置为visible的可见性。保留对ProgressBar的引用并根据进度进行更新。

编辑:其他可能性:创建仅包含ProgressBar的布局。如果要显示ProgressBar下方的项目位于列表中的索引3,则位于getView()的位置4,您会膨胀ProgressBar布局而不是正常的列表项布局并​​返回风景。 在getCount()中,您必须返回商品的数量+ 1.