Android
Android

Reputation: 2393

custom listview scrolling is stuttering

    import java.io.BufferedInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;

    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.entity.BufferedHttpEntity;
    import org.apache.http.impl.client.DefaultHttpClient;

    import android.app.Activity;
    import android.content.Context;
    import android.content.Intent;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.drawable.Drawable;
    import android.net.Uri;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.ViewGroup;
    import android.view.ViewGroup.LayoutParams;
    import android.view.ViewParent;
    import android.webkit.WebView;
    import android.widget.BaseAdapter;
    import android.widget.ImageView;
    import android.widget.ImageView.ScaleType;
    import android.widget.LinearLayout;
    import android.widget.TextView;
    import android.widget.ViewAnimator;

    public class NewsScreenAdapter extends BaseAdapter {

        LayoutInflater inflater;
        public GifDecoderView webview1;
        public static  viewholder holder;
        View view = null;
        public static Context context;
        public ImageLoader IL;
        public String imgUrl;
        public static String addurl;    
        public NewsScreenActivity activity;
        String image;
        public static String str;
        public static Date parsed;
        public static String ac, cat_id;
        int storyLenght;

        public NewsScreenAdapter(NewsScreenActivity a) {
            // TODO Auto-generated constructor stub

            context = a.getApplicationContext();
            this.activity = a;       
            inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            IL = new ImageLoader(activity.getApplicationContext());   
         }

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            // return NewsScreenActivity.arrayList_header.size();

            return NewsScreenActivity.TotalDataArray.size();
        }

        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return position;
        }

        @Override
        public int getItemViewType(int position) {
            // TODO Auto-generated method stub
            return position;
        }

        @Override
        public int getViewTypeCount() {
            // TODO Auto-generated method stub
            return NewsScreenActivity.TotalDataArray.size();
        }
        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
        }

        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub

            View vi = convertView;

                holder = new viewholder();

                vi = inflater.inflate(R.layout.newsscren_row, null);
                holder.news_header_title = (TextView) vi.findViewById(R.id.header_title);
                holder.ll_data = (LinearLayout) vi.findViewById(R.id.data);

                vi.setTag(holder);

            holder.news_header_title.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    cat_id = NewsScreenActivity.arrayList_header.get(position);
                    ac = ((NewsScreenActivity.MainData) NewsScreenActivity.TotalDataArray.get(position)).catId;

                    activity.startActivity(new Intent(activity,CategoryActivity.class).putExtra("id", ac));

                }
            });

            holder.ll_data.removeAllViews();
            try {


             storyLenght = ((NewsScreenActivity.MainData) NewsScreenActivity.TotalDataArray.get(position)).storyArr.size();
            } catch (Exception e) {
                // TODO: handle exception
            }
            Log.d("Adapter ", " story Lenght " + storyLenght); 

            for (int i = 0; i < storyLenght; i++) {

                view = LayoutInflater.from(activity).inflate(R.layout.sub_row, null);

                holder.short_text = (TextView) view.findViewById(R.id.short_text);
                holder.image = (ImageView) view.findViewById(R.id.image);
                holder.des = (TextView) view.findViewById(R.id.des);
                holder.date_time = (TextView) view.findViewById(R.id.date_time);
                holder.llAdd = (LinearLayout) view.findViewById(R.id.sub_llAdd);
                holder.imgAdd = (ImageView) view.findViewById(R.id.imgAdd);

            try{
                    holder.image.setTag(NewsScreenActivity.arrayList_image.get(i));

                    IL.DisplayImage(
                            ((NewsScreenActivity.ImagesData) ((NewsScreenActivity.StoryData) ((NewsScreenActivity.MainData) NewsScreenActivity.TotalDataArray
                                    .get(position)).storyArr.get(i)).imageArr.get(0)).smallurl, activity, holder.image);

                    notifyDataSetChanged();

                } catch (Exception e) {
                    // TODO: handle exception
                }
     try {
         holder.short_text.setText(((NewsScreenActivity.StoryData) ((NewsScreenActivity.MainData) NewsScreenActivity.TotalDataArray.get(position)).storyArr.get(i)).title);
           holder.des.setText(((NewsScreenActivity.StoryData) ((NewsScreenActivity.MainData) NewsScreenActivity.TotalDataArray.get(position)).storyArr.get(i)).description);


                String st = ((NewsScreenActivity.StoryData) ((NewsScreenActivity.MainData) NewsScreenActivity.TotalDataArray
                        .get(position)).storyArr.get(i)).date;
                parsed = new Date(Long.parseLong(st.substring(6, st.length() - 2)));

                SimpleDateFormat sdf = new SimpleDateFormat("MMM dd,yyyy hh:mmaa");
                System.out.println(sdf.format(parsed));
                String concat = sdf.format(parsed);
                String data = concat;
                String half1 = data.substring(0, 11);
                Log.e("1st date", "" + half1);

                SimpleDateFormat display_date = new SimpleDateFormat("dd.MM.yyyy");
                Date d_date = new Date();
                String dis_date = display_date.format(parsed);

                String half2 = data.substring(11, 19);
                Log.e("2st time", "" + half2);      

                SimpleDateFormat currentdate = new SimpleDateFormat("MMM dd,yyyy");
                Date currunt = new Date();
                String day = currentdate.format(currunt);
                if (half1.equalsIgnoreCase(day) == true) {
                    holder.date_time.setText(half2);
                    Log.v("if condition", "" + half2);
                } else {
                    half1 = dis_date;
                    holder.date_time.setText(half1);
                    Log.v("else condition", "" + half1);
                }
                Log.e("currunt time", "" + day); 

                holder.news_header_title.setText(((NewsScreenActivity.MainData) NewsScreenActivity.TotalDataArray
                                .get(position)).catDisplay);


                if (!((NewsScreenActivity.StoryData) ((NewsScreenActivity.MainData) NewsScreenActivity.TotalDataArray
                        .get(position)).storyArr.get(i)).advertising
                        .equalsIgnoreCase("null")) {

                     holder.short_text.setVisibility(view.GONE);
                     holder.date_time.setVisibility(view.GONE);
                     holder.des.setVisibility(view.GONE);

                    imgUrl = ((NewsScreenActivity.StoryData) ((NewsScreenActivity.MainData) NewsScreenActivity.TotalDataArray
                            .get(position)).storyArr.get(i)).adData.imageurl;

                    // TODO Auto-generated method stub
                    addurl = ((NewsScreenActivity.StoryData) ((NewsScreenActivity.MainData) NewsScreenActivity.TotalDataArray
                            .get(position)).storyArr.get(i)).adData.targeturl;


                    //-----------------GIF Image view ------------


                    //holder.imgAdd.setImageBitmap(IL.getBitmap(imgUrl));
                    holder.imgAdd.setImageBitmap(loadImageFromUrl(imgUrl));
                    /* InputStream is = null;
                        try {
                            is = (InputStream) new URL(imgUrl).getContent();

                      webview1 = new GifDecoderView(context, is);           
                      activity.setContentView(webview1);                                            

                        } catch (Exception e) {
                            return null;
                        }*/

                    try {
                        InputStream is = (InputStream) new URL(imgUrl).getContent();

                        GifDecoderView webview1 = new GifDecoderView(activity, is);
                    //  GifMovieView webview1 = new GifMovieView(activity, is);

                //      holder.llAdd.addView(webview1, holder.imgAdd.getLayoutParams());


                    } catch (Exception e) {
                        // TODO: handle exception
                    }


                    holder.imgAdd.setOnClickListener(new OnClickListener() {                    
                        @Override
                        public void onClick(View v) {                       

                            activity.startActivity(new Intent(activity, AdvertismentActivity.class));

                        }
                    });             
                    Log.i("---", "---------" + imgUrl);
                    holder.llAdd.setVisibility(View.VISIBLE);
                  }

                holder.ll_data.addView(view);      

                Log.i("Set Tag", position+"OK"+i);
                view.setTag(position+"OK"+i);

                view.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {

                        String tag = (String) v.getTag();
                        String[] arr = tag.split("OK");
                        int p = Integer.parseInt(arr[0]);
                        int i = Integer.parseInt(arr[1]);
                        Log.i("Pos and I", p + "   " + i );

                        str = ((NewsScreenActivity.StoryData) ((NewsScreenActivity.MainData) NewsScreenActivity.TotalDataArray .get(p)).storyArr.get(i)).storyid;

                        Log.i("Pos and I and STR", p + "   " + i + "   "  + str);
                        Intent intent = new Intent(context,ShowFullDescriprion.class);
                        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        intent.putExtra("id", str);
                        intent.putExtra("cat", p);
                        intent.putExtra("pos",i);
                        context.startActivity(intent);
                    }
                });
     } catch (Exception e) {
            // TODO: handle exception
        }
            }
            return vi;

        }

        public static String getDate(long milliSeconds, String dateFormat) {
            // Create a DateFormatter object for displaying date in specified
            // format.
            DateFormat formatter = new SimpleDateFormat(dateFormat);

            // Create a calendar object that will convert the date and time value in
            // milliseconds to date.
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(milliSeconds);
            return formatter.format(calendar.getTime());         
        }    
        public static class viewholder {

            TextView news_header_title, short_text, des, date_time;
            LinearLayout ll_data, llAdd;
            public ImageView image, imgAdd;

        }
        public static Bitmap loadImageFromUrl(String url) {
            URL m;
            InputStream i = null;
            BufferedInputStream bis = null;
            ByteArrayOutputStream out =null;
            try {
                m = new URL(url);
                i = (InputStream) m.getContent();
                bis = new BufferedInputStream(i,1024 * 8);
                out = new ByteArrayOutputStream();
                int len=0;
                byte[] buffer = new byte[1024];
                while((len = bis.read(buffer)) != -1){
                    out.write(buffer, 0, len);
                }
                out.close();
                bis.close();
            } catch (MalformedURLException e1) {
                e1.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            byte[] data = out.toByteArray();
            Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
            //Drawable d = Drawable.createFromStream(i, "src");
            return bitmap;
        }

    } 

Upvotes: 3

Views: 1413

Answers (3)

Android
Android

Reputation: 2393

import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONObject;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.StrictMode;

import android.text.Html;
import android.util.Log;
import android.view.GestureDetector;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

public class ShowFullDescriprion extends Activity implements OnClickListener {

    ImageView show_image, adv_image, refresh,show_home;
    TextView title_text, des_text, date_time_txt;
    Button back_btn;
    LinearLayout ll, llAdv;
    public static String url, full_des, advertising, adurl = "",img,
            targeturl;
    ProgressDialog progressDialog;
    TextView mDisplay;
    AsyncTask<Void, Void, Void> mRegisterTask;
    String TAG = "ShowFullDescriprion";


    public static ArrayList<String> catId = new ArrayList<String>();
    public static ArrayList<String> catDisp = new ArrayList<String>();
    public static ArrayList<String> next_arraylist = new ArrayList<String>();
    public static ArrayList<String> privious_arraylist = new ArrayList<String>();
    //public static ArrayList<String> arrayList_advertising = new ArrayList<String>();

    SimpleGestureFilter simpleGestureFilter;
    LinearLayout llCat;
    TextView tvCatDisp;

    private static final int SWIPE_MIN_DISTANCE = 200;
    private static final int SWIPE_MAX_OFF_PATH = 250;
    private static final int SWIPE_THRESHOLD_VELOCITY = 200;
    int swpCnt = 0;
    int SWIPE_MAX_VALUE = 1;
    int PIC_WIDTH = 0;

    private GestureDetector gestureDetector;
    View.OnTouchListener gestureListener;

    @SuppressWarnings("unused")
    private Animation animleftin = null, animleftout = null,
            animrightin = null, animrightout = null;

    public static String idS, titleS, dateS, descS, next, privious, adv;
    public static String bigimageS=null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.showfull_description);


        back_btn = (Button) findViewById(R.id.button1);
        llCat = (LinearLayout) findViewById(R.id.llCategory);
//      llCat.setOnClickListener(this);
        adv_image = (ImageView) findViewById(R.id.imgAdd);
        refresh = (ImageView) findViewById(R.id.refresh_btn);
        show_home=(ImageView)findViewById(R.id.showfull_des_home);

        llAdv = (LinearLayout) findViewById(R.id.llAdd);
        // simpleGestureFilter = new SimpleGestureFilter(this, this);
    //  int SWIPE_MAX_VALUE_new = ((NewsScreenActivity.MainData) NewsScreenActivity.TotalDataArray.get(getIntent().getExtras().getInt("cat"))).storyArr.size();

        //swpCnt = ((CategoryActivity.MainData) CategoryActivity.TotalDataArray.get(getIntent().getExtras().getInt("cat"))).storyArr.indexOf(getIntent().getExtras().getString("id"));
        //((NewsScreenActivity.StoryData) ((NewsScreenActivity.MainData) NewsScreenActivity.TotalDataArray .get(p)).storyArr.get(i)).storyid;
        //String temp = ((CategoryActivity.StoryData) ((CategoryActivity.MainData) CategoryActivity.TotalDataArray .get(getIntent().getExtras().getInt("cat"))).storyArr.get(getIntent().getExtras().getString("pos"))).storyid;

    //  Log.i("Show full Description .....", "**********************  cat "+getIntent().getExtras().getInt("cat")+" **** id *** "+getIntent().getExtras().getString("id"));
        //Log.i("Show full Description .....", "**********************  SWIPE_MAX_VALUE_new "+ SWIPE_MAX_VALUE_new+" *** swpCnt **** "+temp +"**** Array *** "+((CategoryActivity.MainData) CategoryActivity.TotalDataArray.get(getIntent().getExtras().getInt("cat"))).storyArr.get(5));
        try {
        //  SWIPE_MAX_VALUE = ((NewsScreenActivity.MainData) NewsScreenActivity.TotalDataArray.get(getIntent().getExtras().getInt("cat"))).storyArr.size();
            SWIPE_MAX_VALUE = ((CategoryActivity.MainData) CategoryActivity.TotalDataArray.get(getIntent().getExtras().getInt("cat"))).storyArr.size();
            swpCnt = getIntent().getExtras().getInt("pos");

        } catch (Exception e) {
            // TODO: handle exception
        }

        url = "http://maritimeglobalnews.com/json/story/"+ getIntent().getExtras().getString("id");

        new StoryDataAsyn().execute();

        title_text = (TextView) findViewById(R.id.show_full_des_title_txt);
        show_image = (ImageView) findViewById(R.id.show_full_des_image);
        des_text = (TextView) findViewById(R.id.show_full_des_txt);
        date_time_txt = (TextView) findViewById(R.id.show_full_des_datetime_txt);

        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();

        StrictMode.setThreadPolicy(policy); 

        show_home.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
            startActivity(new Intent(getBaseContext(), NewsScreenActivity.class));
            finish();
            }
        });

    /*  Log.i(TAG,
                "================Inside OnCreate Method==============================");
        checkNotNull(SERVER_URL, "SERVER_URL");
        checkNotNull(SENDER_ID, "SENDER_ID");
        // Make sure the device has the proper dependencies.
        GCMRegistrar.checkDevice(getBaseContext());
        // Make sure the manifest was properly set - comment out this line
        // while developing the app, then uncomment it when it's ready.
        GCMRegistrar.checkManifest(getBaseContext());

        registerReceiver(mHandleMessageReceiver, new IntentFilter(
                DISPLAY_MESSAGE_ACTION));
        final String regId = GCMRegistrar.getRegistrationId(this);
        if (regId.equals("")) {
            Log.i(TAG,
                    "================Inside if in regId=null ==============================");
            // Automatically registers application on startup.
            GCMRegistrar.register(this, SENDER_ID);
        } else {
            Log.i(TAG,
                    "================Inside else in regId=null ==============================");
            // Device is already registered on GCM, needs to check if it is
            // registered on our server as well.
            if (GCMRegistrar.isRegisteredOnServer(this)) {
                // Skips registration.
                Log.i(TAG,
                        "================Inside else in regId=null Already register on Server =============================");
                mDisplay.append(getString(R.string.already_registered) + "\n");
            } else {
                Log.i(TAG,
                        "================Inside else in regId=null trying to  register on Server =============================");
                // Try to register again, but not in the UI thread.
                // It's also necessary to cancel the thread onDestroy(),
                // hence the use of AsyncTask instead of a raw thread.
                final Context context = this;
                mRegisterTask = new AsyncTask<Void, Void, Void>() {

                    @Override
                    protected Void doInBackground(Void... params) {
                        Log.i(TAG,
                                "================Inside doInBackground Method==============================");
                        boolean registered = ServerUtilities.register(context,
                                regId);
                        // At this point all attempts to register with the app
                        // server failed, so we need to unregister the device
                        // from GCM - the app will try to register again when
                        // it is restarted. Note that GCM will send an
                        // unregistered callback upon completion, but
                        // GCMIntentService.onUnregistered() will ignore it.
                        if (!registered) {
                            GCMRegistrar.unregister(context);
                        }
                        return null;
                    }

                    @Override
                    protected void onPostExecute(Void result) {
                        Log.i(TAG,
                                "================Inside onPostExecute Method==============================");
                        mRegisterTask = null;
                    }

                };
                mRegisterTask.execute(null, null, null);
            }
        }       */

        back_btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                ShowFullDescriprion.this.finish();
            }
        });
        refresh.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                new StoryDataAsyn().execute();      

            }
        });

        gestureDetector = new GestureDetector(new MyGestureDetector());
        gestureListener = new View.OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
                return gestureDetector.onTouchEvent(event);
            }
        };
        prepareAnimations();
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        // TODO Auto-generated method stub
        return super.onTouchEvent(event);
    }

    /*boolean net;

    //onCreate
    net = void isOnline() {
    }
    if (net == true)
    {
    //perform internet related tasks in the app
    }

    //function
    public boolean isOnline1() {
            ConnectivityManager cm = (ConnectivityManager) this
                    .getSystemService(Context.CONNECTIVITY_SERVICE);

            NetworkInfo activeNetworkInfo = cm.getActiveNetworkInfo();
            return activeNetworkInfo != null;

            // return cm.getActiveNetworkInfo().isConnected();

        }*/


    public class StoryDataAsyn extends AsyncTask<Void, Void, Void> {
    //  NewsScreenActivity obj = new NewsScreenActivity();

        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            super.onPreExecute();

    //      if (isNetworkConnected() == true) 
    //      {
                progressDialog = new ProgressDialog(ShowFullDescriprion.this);
                progressDialog.setMessage("Loding ...");
                progressDialog.setCancelable(false);
                progressDialog.show();
/*          } else  {
                AlertDialog connection = new AlertDialog.Builder(
                        ShowFullDescriprion.this)
                        .setTitle("No Network Found")
                        .setMessage(
                                "Internet Connection Reqired To Use this Application")
                        .setPositiveButton("Ok",
                                new DialogInterface.OnClickListener() {

                                    public void onClick(DialogInterface dialog,
                                            int whichButton) 
                                    {

                                    }
                                }).create();

                connection.show();
            }
*/      }

        @Override
        protected Void doInBackground(Void... params) {
            // TODO Auto-generated method stub

            catId.clear();
            catDisp.clear();            
            getData(url);

            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);
            if (isNetworkConnected() == true) {

            progressDialog.dismiss();
            title_text.setText(titleS);         

            /*if(bigimageS!= null && !bigimageS.equals(""))
            {
            show_image.setImageBitmap(decodeImage(bigimageS));
            Log.v("if", ""+bigimageS);
            }else
            {
                show_image.setImageBitmap(decodeImage(null));

                Log.v("else", ""+bigimageS);
            }   
*/

            if(isBlank(bigimageS)==true)

            {
                show_image.setVisibility(View.GONE);
                show_image.setImageBitmap(decodeImage(null));
            }
            else if(isBlank(bigimageS)==false)
            {
                show_image.setImageBitmap(decodeImage(bigimageS));
            }
    //      show_image.setImageBitmap(loadImageFromUrl(bigimageS));         

            //show_image.setImageBitmap(decodeImage(bigimageS));
            des_text.setText(Html.fromHtml(descS));         

            Date parsed = new Date(Long.parseLong(dateS.substring(6,
                    dateS.length() - 2)));

            SimpleDateFormat sdf = new SimpleDateFormat("MMM dd,yyyy hh:mmaa");
            System.out.println(sdf.format(parsed));

            date_time_txt.setText(sdf.format(parsed));

            llCat.removeAllViews();
            for (int i = 0; i < catId.size(); i++) {

                tvCatDisp = new TextView(ShowFullDescriprion.this);

                tvCatDisp.setText("");      

                tvCatDisp.setText(catDisp.get(i));
                tvCatDisp.setBackgroundResource(R.drawable.box);
                tvCatDisp.setTextColor(Color.BLACK);
                tvCatDisp.setTextSize(18);
                tvCatDisp.setTag(i);
                Log.e("tvCatDisp............", ""+catDisp.get(i));
                tvCatDisp.setOnClickListener(ShowFullDescriprion.this);

                tvCatDisp.setOnClickListener(new OnClickListener() {

                 @Override
                 public void onClick(View v) {
                 // TODO Auto-generated method stub
                 int pos = Integer.parseInt(v.getTag().toString());
                 startActivity(new Intent(ShowFullDescriprion.this,
                 CategoryActivity.class).putExtra("id",catId.get(pos)));
                 }
                 });

                llCat.addView(tvCatDisp);
            }
            llAdv.removeAllViews();
            if ((!adurl.equalsIgnoreCase("")) && adurl != null) {
                llAdv.setVisibility(View.VISIBLE);
                ImageLoader il = new ImageLoader(ShowFullDescriprion.this);

            //  adv_image.setImageBitmap(il.getBitmap(adurl));
        //      adv_image.setImageBitmap(loadImageFromUrl(adurl));
                  try {
                        InputStream is = (InputStream) new URL(adurl).getContent();

                        GifDecoderView webview1 = new GifDecoderView(ShowFullDescriprion.this, is);




                    //    activity.setContentView(webview1);

                    llAdv.addView(webview1,adv_image.getLayoutParams());

                   // holder.imgAdd.setImageBitmap(IL.getBitmap(imgUrl));


                    } catch (Exception e) {

                    }

                  llAdv.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                    //    Intent showAdvIntent =new Intent(ShowFullDescriprion.this,AdvertismentActivity.class);
                    //    showAdvIntent.putExtra("id",targeturl);
                        startActivity(new Intent(getBaseContext(),AdvertismentActivity.class));
                        Log.e("show add url...", ""+targeturl);
                    }
                });
            } 
            }else 

            {
                llAdv.setVisibility(View.GONE);
                AlertDialog connection = new AlertDialog.Builder(
                        ShowFullDescriprion.this)
                        .setTitle("No Network Found")
                        .setMessage(
                                "Internet Connection Reqired To Use this Application")
                        .setPositiveButton("Ok",
                                new DialogInterface.OnClickListener() {

                                    public void onClick(DialogInterface dialog,
                                            int whichButton) 
                                    {
                                    //  new StoryDataAsyn().execute();
                                        progressDialog.dismiss();
                                    }
                                }).create();

                connection.show();              

            }       

        }
    }
    public boolean isNetworkConnected() {
        ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo ni = cm.getActiveNetworkInfo();
        if (ni == null) {
            return false;
        } else

        return true;
    }

    public void getData(String url) {

        HttpClient client = new DefaultHttpClient();
        HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); // Timeout        

        try {

            HttpPost request = new HttpPost(url);

            DefaultHttpClient httpClient = new DefaultHttpClient();

            HttpResponse res = httpClient.execute(request);
            Log.i("Request", request.toString());

            String JsonResponseData = EntityUtils.toString(res.getEntity());
            Log.i("JSON", JsonResponseData);

            JSONObject mainJsonObj = new JSONObject(JsonResponseData);

            titleS = mainJsonObj.getString("Title");
            dateS = mainJsonObj.getString("Date");
            descS = mainJsonObj.getString("ContentHTML");
            next = mainJsonObj.getString("NextStoryEID");
            next_arraylist.add(next);
            Log.e("next id", "" + next_arraylist);
            Log.e("nextstring id", "" + next);

            privious = mainJsonObj.getString("PrevStoryEID");
            privious_arraylist.add(privious);
            Log.e("privious id", "" + privious_arraylist);
            Log.e("privious string id", "" + privious);

            try {
                JSONArray tmpAd = mainJsonObj.optJSONArray("advertising");              
                adurl = tmpAd.getJSONObject(0).getString("ImageUrl");
                targeturl = tmpAd.getJSONObject(0).getString("TargetUrl");
                Log.v("target url is", "" + targeturl);

            } catch (Exception e) {
                // TODO: handle exception
            }



            try {
                JSONArray tmpimg = mainJsonObj.optJSONArray("images");          
                bigimageS = tmpimg.getJSONObject(0).getString("iPhoneBigImageURL");             
                Log.v("bigimageS is", "" + bigimageS);
            } catch (Exception e) {
                // TODO: handle exception
            }       

            JSONArray categJsonArr = mainJsonObj.getJSONArray("categories");    

            for (int i = 0; i < categJsonArr.length(); i++) {

                catId.add(categJsonArr.getJSONObject(i) .getString("CategoryEID"));
                catDisp.add(categJsonArr.getJSONObject(i).getString("CategoryDisplay"));
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    public static Bitmap loadImageFromUrl(String url) {
        URL m;
        InputStream i = null;
        BufferedInputStream bis = null;
        ByteArrayOutputStream out =null;
        try {
            m = new URL(url);
            i = (InputStream) m.getContent();
            bis = new BufferedInputStream(i,1024 * 8);
            out = new ByteArrayOutputStream();
            int len=0;
            byte[] buffer = new byte[1024];
            while((len = bis.read(buffer)) != -1){
                out.write(buffer, 0, len);
            }
            out.close();
            bis.close();
        } catch (MalformedURLException e1) {
            e1.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        byte[] data = out.toByteArray();
        Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
        //Drawable d = Drawable.createFromStream(i, "src");
        return bitmap;
    }


    public static Bitmap decodeImage(String arrayList_image) {

        URL aURL;

        try {

            aURL = new URL(arrayList_image);

            URLConnection conn = aURL.openConnection();

            conn.connect();

            InputStream is = conn.getInputStream();

            BufferedInputStream bis = new BufferedInputStream(is);

            Bitmap bm = BitmapFactory.decodeStream(bis);

            bis.close();

            is.close();

            return bm;

        } catch (MalformedURLException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();
        }
        return null;
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent me) {
        this.gestureDetector.onTouchEvent(me);
        return super.dispatchTouchEvent(me);
    }

    class MyGestureDetector extends SimpleOnGestureListener {
        @Override
        public boolean onDown(MotionEvent e) {
            // TODO Auto-generated method stub

            return super.onDown(e);
        }

        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
                float velocityY) {

            Log.e("Inside onfling", "Call");

            if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
                return false;
            // right to left swipe
            if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {

                url = "http://maritimeglobalnews.com/json/story/"+next;
                new StoryDataAsyn().execute();

                Log.d("url next mate", ""+url);
                Log.d("right to left privious.....", ""+next_arraylist);        

            try {
                Log.i("","swip count " + swpCnt+" ***** "+((CategoryActivity.MainData) CategoryActivity.TotalDataArray.get(getIntent().getExtras().getInt("cat"))).storyArr.size());    
            } catch (Exception e) {
                // TODO: handle exception
            }               
                if (swpCnt >= 0 && swpCnt < SWIPE_MAX_VALUE - 1) 
                {
                    swpCnt++;

                /*  url = "http://maritimeglobalnews.com/json/story/"+next;
                    new StoryDataAsyn().execute();

                    Log.d("url next mate", ""+url);
                    Log.d("right to left privious.....", ""+next_arraylist);        */      
                }               
            } 
            else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY ){ 



                url = "http://maritimeglobalnews.com/json/story/"+privious;
                Log.v("previousid first if", ""+privious);
                Log.i("right to left privious first if.....", ""+privious_arraylist);

                new StoryDataAsyn().execute();  

                if (swpCnt > 0 && swpCnt <= SWIPE_MAX_VALUE - 1) {


                    swpCnt--;

                    /*url = "http://maritimeglobalnews.com/json/story/"+privious;
                    Log.v("url",""+url);
                    Log.v("previousid 2 if", ""+privious);                  
                    new StoryDataAsyn().execute();      */              
                }
                try {
                    Log.i("","swip count " + swpCnt+" ***** "+((CategoryActivity.MainData) CategoryActivity.TotalDataArray.get(getIntent().getExtras().getInt("cat"))).storyArr.size());                    
                } catch (Exception e) {
                    // TODO: handle exception
                }

                /*if (swpCnt > 0 && swpCnt <= SWIPE_MAX_VALUE - 1) 
                {
                    swpCnt--;   

                    url = "http://maritimeglobalnews.com/json/story/"+privious;
                    Log.v("previousid 3 if", ""+privious);
                    Log.i("right to left privious. 3 if", ""+privious_arraylist);                   

                    new StoryDataAsyn().execute();              
                }   */                      
            }
            return false;
        }
    }

    private void prepareAnimations() {
        animleftin = new TranslateAnimation(Animation.RELATIVE_TO_PARENT,
                +1.0f, Animation.RELATIVE_TO_PARENT, 0.0f,
                Animation.RELATIVE_TO_PARENT, 0.0f,
                Animation.RELATIVE_TO_PARENT, 0.0f);

        animleftout = new TranslateAnimation(Animation.RELATIVE_TO_PARENT,
                0.0f, Animation.RELATIVE_TO_PARENT, -1.0f,
                Animation.RELATIVE_TO_PARENT, 0.0f,
                Animation.RELATIVE_TO_PARENT, 0.0f);

        animrightin = new TranslateAnimation(Animation.RELATIVE_TO_PARENT,
                -1.0f, Animation.RELATIVE_TO_PARENT, 0.0f,
                Animation.RELATIVE_TO_PARENT, 0.0f,
                Animation.RELATIVE_TO_PARENT, 0.0f);

        animrightout = new TranslateAnimation(Animation.RELATIVE_TO_PARENT,
                0.0f, Animation.RELATIVE_TO_PARENT, +1.0f,
                Animation.RELATIVE_TO_PARENT, 0.0f,
                Animation.RELATIVE_TO_PARENT, 0.0f);
            }

    /*@Override
    protected void onDestroy() {
        Log.i(TAG,
                "================Inside  OnDestroy  Method==============================");
        if (mRegisterTask != null) {
            mRegisterTask.cancel(true);
        }
        unregisterReceiver(mHandleMessageReceiver);
        GCMRegistrar.onDestroy(this);
        super.onDestroy();
    }

    private void checkNotNull(Object reference, String name) {
        Log.i(TAG,
                "================Inside checkNotNull  Method==============================");
        if (reference == null) {
            throw new NullPointerException(getString(R.string.error_config,
                    name));
        }
    }

    private final BroadcastReceiver mHandleMessageReceiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            Log.i(TAG,
                    "================Inside OnReceive in BroadcastReceiver Method==============================");
            String newMessage = intent.getExtras().getString(EXTRA_MESSAGE);
            mDisplay.append(newMessage + "\n");
        }
    };*/

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        if (v == tvCatDisp) {

            // TODO Auto-generated method stub

            startActivity(new Intent(ShowFullDescriprion.this,
                    CategoryActivity.class).putExtra("id", catId.get((Integer)v.getTag())));
        }

    }
    public static boolean isBlank(String string) {
        if (bigimageS == null || bigimageS.length() == 0)
            return true;

        int l = bigimageS.length();
        for (int i = 0; i < l; i++) {
            if (!Character.isWhitespace(bigimageS.codePointAt(i)))
                return false;
        }
        return true;
    }

}

Upvotes: 2

Ankitkumar Makwana
Ankitkumar Makwana

Reputation: 3485

Please use for existing layout in BaseAdpter as below

ViewHolder holder = null;

    if ( convertView == null )
    {
        /* There is no view at this position, we create a new one. 
           In this case by inflating an xml layout */
        convertView = mInflater.inflate(R.layout.listview_item, null);  
        holder = new ViewHolder();
        holder.toggleOk = (ToggleButton) convertView.findViewById( R.id.togOk );
        convertView.setTag (holder);
    }
    else
    {
        /* We recycle a View that already exists */
        holder = (ViewHolder) convertView.getTag ();
    }

this may helps you

Upvotes: 0

Ben Weiss
Ben Weiss

Reputation: 17922

You're not reusing your list items. This is why the list is starting to "stutter".

There are a lot of answers on this problem that display the concept of reusing ListView items. Like this one

In general: within your getView method, check if the convertView is null. If it is, inflate your view. If it's not null, just insert the items that you want to display. This should solve your stuttering list view problem.

Upvotes: 1

Related Questions