package net.pocketmine.forum; import java.io.IOException; import java.io.Serializable; import java.util.ArrayList; import com.actionbarsherlock.app.ActionBar; import com.actionbarsherlock.app.SherlockActivity; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; import net.pocketmine.forum.DetailsActivity.Review; import net.pocketmine.server.R; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; import android.os.Bundle; import android.view.LayoutInflater; import android.widget.LinearLayout; import android.widget.ProgressBar; public class ReviewActivity extends SherlockActivity { Boolean hasMore = false; @SuppressWarnings("unchecked") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_review); final int pluginID = getIntent().getIntExtra("pluginID", -1); Serializable obj = getIntent().getSerializableExtra("reviews"); if (pluginID == -1 || obj == null || !(obj instanceof ArrayList<?>)) { finish(); // all } ActionBar bar = getSupportActionBar(); bar.setHomeButtonEnabled(true); bar.setDisplayHomeAsUpEnabled(true); Drawable colorDrawable = new ColorDrawable(PluginsActivity.color); Drawable bottomDrawable = getResources().getDrawable( R.drawable.actionbar_bottom); LayerDrawable ld = new LayerDrawable(new Drawable[] { colorDrawable, bottomDrawable }); bar.setBackgroundDrawable(ld); ArrayList<Review> reviews = (ArrayList<Review>) obj; final LinearLayout layout = (LinearLayout) findViewById(R.id.plugin_reviews); final LayoutInflater inflater = getLayoutInflater(); for (int i = 0; i < reviews.size(); i++) { if (reviews.size() > i) { if (reviews.get(i) == null) { hasMore = true; } else { reviews.get(i).makeView(inflater, layout); } } } DynamicScrollView scroll = (DynamicScrollView) findViewById(R.id.plugin_reviews_scroll); scroll.setOnLoadMore(new DynamicScrollView.LoadMoreListener() { int page = 1; boolean loading = false; @Override public void onLoadMore() { if (hasMore && !loading) { loading = true; page++; hasMore = false; final ProgressBar pb = new ProgressBar(ReviewActivity.this); pb.setLayoutParams(new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)); layout.addView(pb); new Thread(new Runnable() { @Override public void run() { try { final ArrayList<Review> newReviews = DetailsActivity .getReviews(pluginID, page); runOnUiThread(new Runnable() { @Override public void run() { layout.removeView(pb); for (int i = 0; i < newReviews.size(); i++) { if (newReviews.size() > i) { if (newReviews.get(i) == null) { hasMore = true; } else { newReviews.get(i).makeView( inflater, layout); } } } loading = false; } }); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }).start(); } } }); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { finish(); return true; } return super.onOptionsItemSelected(item); } @Override public boolean onCreateOptionsMenu(Menu menu) { return true; } }