2015-06-27 3 views
0

У меня есть SQLite базы данных, которые имеют таблицы (преимущества) и предназначены как этотПрогресс бар в ListView

recipe percent name   ID 
1   100  Digestion 1 
1   80   Lower ch  2 
1   60   Immune sys 3 

Я хочу, чтобы создать список, которые имеют два элемента.

первое это имя, которое я не имею никаких проблем с

секунду процентов, что я хочу показать, как прогресс бар.

Это то, что я написал для этого.

public class BenefitsFragment extends Fragment { 
private JuiceDatabase db; 
public String data; 

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

    View rootView = inflater.inflate(R.layout.fragment_benefits, container, false); 

    db = new JuiceDatabase(super.getActivity()); 

    //Ingredients Code 
    Cursor benefits = db.getbenefitsresult(); 


    String[] from = new String[] 
      {"name","percent"}; 

    int[] to = new int[] 
      {R.id.input,R.id.progressbar}; 

    final SimpleCursorAdapter myadapter = new CustomSimpleCursorAdapter(
      super.getActivity(), 
      R.layout.ingredients, 
      benefits, 
      from, 
      to); 



    final ListView list1 = (ListView) rootView.findViewById(R.id.list1); 
    list1.setAdapter(myadapter); 

    list1.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, (calculateHeight(list1)))); 

    return rootView ; 
} 

private int calculateHeight(ListView list) { 

    int height = 0; 

    for (int i = 0; i < list.getCount(); i++) { 
     View childView = list.getAdapter().getView(i, null, list); 
     childView.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); 
     height+= childView.getMeasuredHeight(); 
    } 

    //dividers height 
    height += list.getDividerHeight() * (list.getCount()+5); 

    return height; 
    } 
} 

fragment_benefits.xml

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_height="wrap_content" 
android:layout_width="match_parent" 
android:scrollbars="none"> 
<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 
    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:background="@drawable/group" 
     android:layout_marginRight="15sp" 
     android:layout_marginLeft="15sp" 
     android:layout_marginTop="15sp" 
     android:layout_marginBottom="15sp" 
     android:elevation="15dp"> 
     <TextView 
      android:id="@+id/text1" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:paddingRight="5sp" 
      android:paddingLeft="5sp" 
      android:paddingTop="5sp" 
      android:paddingBottom="10sp" 
      android:text="benefits" 
      android:textSize="22sp" 
      android:textColor="@color/dark_grey" 
      android:gravity="center_horizontal" /> 
     <View style="@style/divider1"/> 

     <ListView 
      android:id="@+id/list1" 
      android:layout_width="fill_parent" 
      android:layout_height="0sp" 
      android:scrollbars="none" 
      android:paddingTop="5sp" 
      android:paddingLeft="5sp" 
      android:paddingRight="5sp" 
      android:layout_marginBottom="5sp" 
      android:layout_weight="1" 
      android:clickable="false"> 
     </ListView> 
    </LinearLayout> 
</LinearLayout> 

ingredients.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:adjustViewBounds="true"> 



<TextView 
    android:id="@+id/input" 
    android:layout_width="fill_parent" 
    android:layout_height="@dimen/list_name_height" 
    android:layout_alignWithParentIfMissing="true" 
    android:textSize="12sp" 
    android:textColor="@color/dark_grey" 
    android:gravity="center_vertical|center" 
    android:background="@android:color/transparent" 
    android:elevation="8sp" 
    android:elegantTextHeight="false" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 
<ProgressBar 
    android:id="@+id/progressbar" 
    android:layout_width="fill_parent" 
    android:layout_height="20sp" 
    android:layout_below="@+id/input" 
    android:textSize="25sp" 
    android:longClickable="false" 
    style="@android:style/Widget.ProgressBar.Horizontal"> 
</ProgressBar> 

CustomSimpleCursorAdabtor.class

public class CustomSimpleCursorAdapter extends SimpleCursorAdapter { 
    public CustomSimpleCursorAdapter(Context context, int layout, Cursor c, String[] from, 
            int[] to) { 
     super(context, layout, c, from, to); 
    } 

    public void bindView(View view, Context context, Cursor cursor) { 
     super.bindView(view, context, cursor); 
     updateProgressbar(view, cursor); 

    } 

    private void updateProgressbar(View view, Cursor cursor) { 

     ProgressBar progressBar = (ProgressBar) view 
       .findViewById(R.id.progressbar); 

     progressBar.setMax(100); 
     progressBar.setProgress(cursor.getInt(cursor 
       .getColumnIndex("percent"))); 


    } 
} 

CursorAdaptor

public Cursor getbenefitsresult(){ 

    SQLiteDatabase db = this.getReadableDatabase(); 
    SQLiteQueryBuilder qb = new SQLiteQueryBuilder(); 
    String data=StoreData.data; 

    String sqlTables = "benefits"; 
    qb.setTables(sqlTables); 
    Cursor c = db.rawQuery("SELECT 0 _id, name, percent FROM benefits WHERE recipe ="+data,null); 
    c.moveToFirst(); 
    Log.d("percent",Integer.toString(c.getInt(c 
      .getColumnIndex("percent")))); 
    db.close(); 
    return c; 

} 

После запуска программы, когда я нажимаю на эту вкладку фрагментов, вернуться на предыдущую страницу !!!

В чем проблема?

извините, если его вопрос noobish это мое первое приложение.

EDIT 1:

public class MainRecipe extends FragmentActivity implements 
    ActionBar.TabListener { 

private ViewPager viewPager; 
private TabsPagerAdapter mAdapter; 
private ActionBar actionBar; 
// Tab titles 
private String[] tabs = { "مواد لازم", "ارزش غذایی", "فواید" }; 

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

    // Initilization 
    viewPager = (ViewPager) findViewById(R.id.pager); 
    actionBar = getActionBar(); 
    mAdapter = new TabsPagerAdapter(getSupportFragmentManager()); 

    viewPager.setAdapter(mAdapter); 
    actionBar.setHomeButtonEnabled(false); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

    // Adding Tabs 
    for (String tab_name : tabs) { 
     actionBar.addTab(actionBar.newTab().setText(tab_name) 
       .setTabListener(this)); 
    } 

    /** 
    * on swiping the viewpager make respective tab selected 
    * */ 
    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 

     @Override 
     public void onPageSelected(int position) { 
      // on changing the page 
      // make respected tab selected 
      actionBar.setSelectedNavigationItem(position); 
     } 

     @Override 
     public void onPageScrolled(int arg0, float arg1, int arg2) { 
     } 

     @Override 
     public void onPageScrollStateChanged(int arg0) { 
     } 
    }); 
} 

@Override 
public void onTabReselected(Tab tab, FragmentTransaction ft) { 
} 

@Override 
public void onTabSelected(Tab tab, FragmentTransaction ft) { 
    // on tab selected 
    // show respected fragment view 
    viewPager.setCurrentItem(tab.getPosition()); 
} 

@Override 
public void onTabUnselected(Tab tab, FragmentTransaction ft) { 
} 

}

+0

Почтовый код, где вы установили фрагменты – Lokesh

+0

@Lokesh Я отредактировал мое сообщение. – behrooz

+0

Я думаю, проблема в коде CustomSimpleCursorAdaptor ... – behrooz

ответ

0

Я нашел тебя проблему сам. , который был в CustomSimpleCursorAdapter

Я должен был использовать setProgressbar вместо updateprogressbar.

Смежные вопросы