Адаптер Android getView() не вызывает активность

Я пытаюсь вызвать действие из класса адаптера. В моем классе активности нет конструктора, кроме onCreate(). Как я могу назвать это от getView()? Я искал решения, но это не работает.

Мой адаптер getView():

public View getView(int position, View convertView, ViewGroup parent) {
        //SharedPostView holder;
        PostActivity holder;



        if (convertView == null) {
            Log.d("network frag list"," convertView null ");
            LayoutInflater inflater = (LayoutInflater)
                    context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.activity_post, null);
            holder = new PostActivity();
            convertView.setTag(holder);
        } else {
            Log.d("network frag list"," convertView.getTag() ");
            holder = (PostActivity)convertView.getTag();
        }
        holder.init(position);
        Log.d("network frag list", " getView");


        return convertView;
}

person spykeburn    schedule 30.10.2015    source источник
comment
Вы спрашиваете, как начать деятельность?   -  person Fabin Paul    schedule 30.10.2015


Ответы (3)


Попробуй это,

Это мой getView из класса адаптера,

@Override
    public View getView(final int position, View convertView, ViewGroup arg2) {
        // TODO Auto-generated method stub
        View myView = convertView;
        final ViewHolder holder;
        try {

            if (myView == null) {
                LayoutInflater inflater = LayoutInflater.from(context);
                myView = inflater.inflate(R.layout.row_affiliates_list, null);
                holder = new ViewHolder();

                holder.txtAffiliateHeader = (TextView) myView.findViewById(R.id.txtAffiliateHeader);

                holder.rlMain = (RelativeLayout) myView.findViewById(R.id.rlMain);
                holder.viewLine = (TextView) myView.findViewById(R.id.viewLine);

                myView.setTag(holder);
            } else {
                holder = (ViewHolder) myView.getTag();
            }
            holder.txtAffiliateHeader.setText(""+ AffiliatesList.get(position).getStrAffiliateTitle());

            holder.rlMain.setTag(position);
            holder.rlMain.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    int arg2 = Integer.parseInt(v.getTag().toString());

                    Intent intent = new Intent(context, SecondActivity.class);
                    context.startActivity(intent);
                }
            });

            return myView;
        } catch (Exception e) {
            return myView;
        }
    }

Вот как вы можете вызывать активность из класса адаптера при нажатии кнопки или полной относительной компоновки.

person Parth Bhayani    schedule 30.10.2015
comment
Пожалуйста, поддержите этот ответ, если это действительно полезно для вас. - person Parth Bhayani; 30.10.2015
comment
Эй, пожалуйста, проголосуйте за ответ, чтобы больше людей поняли, как это работает. - person Parth Bhayani; 30.10.2015
comment
в чем именно проблема? Расскажите мне подробно, чтобы я мог помочь вам соответственно этому. - person Parth Bhayani; 02.11.2015
comment
Я думаю, что мне нужно иметь больше очков репутации, чтобы на самом деле голосовать за ответы, до тех пор это не будет видно. - person spykeburn; 02.11.2015
comment
Ok. Нет проблем, если этот ответ полезен для вас, пожалуйста, проголосуйте за него, как только вы получите больше репутации. - person Parth Bhayani; 02.11.2015

Если я правильно вас понял, вы пытаетесь запустить другую активность из своего списка. Для этого нужно намерение.

Intent intent = new Intent(this, MySecondActivity.class);
startActivity(intent);

Подробнее

person BigDru    schedule 30.10.2015

Вам нужно понимать доступность метода startActivity(). Вы можете увидеть подробности этого метода, как только нажмете ctrl+click в Android Studio. Вот подробности. Иерархия классов до Activity выглядит следующим образом:

Context (android.content)
   ContextWrapper (android.content)
     ContextThemeWrapper (android.view)
       Activity (android.app)

класс Context имеет абстрактный метод.

 public abstract void startActivity(Intent intent);

Это переопределяется в классе ContextWrapper и классе Activity. Следовательно, вы можете вызвать метод startActivity(Intent intent) из любого из производных классов или из ссылки на производные классы.

Итак, у вас есть ссылка на Context, вы можете вызвать метод как-

context.startActivity(intent)
person Sanjeet A    schedule 30.10.2015