gpt4 book ai didi

android - 我的业务逻辑应该在 fragment 中还是在上面的 Activity 中?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:05:32 24 4
gpt4 key购买 nike

我正在尝试将 fragment 和 ListView 与数组适配器结合使用,但无法从数组适配器中的 onClickListener 调用我的方法。

如果我正确理解模式,一个 fragment 应该是自给自足的,所以我想把我的业务逻辑放在那里。但我无法设法从阵列适配器调用它。如果我将它放在主要 Activity 中,我可以调用它,但这不会阻止我在另一个 Activity 中使用 fragment 并打破范式吗?

是我的业务逻辑错了地方,还是我没有正确调用它?

这是我的 ArrayAdapter;

public class RecipientsListAdapter extends ArrayAdapter<Recipient>{

Context context;
int layoutResourceId;
Recipient data[] = null;

public RecipientsListAdapter(Context context, int layoutResourceId, Recipient[] data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View row = convertView;
RecipientHolder holder = null;

final boolean isLastRow = (position == data.length-1);

if(row == null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);

holder = new RecipientHolder();
holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle);

row.setTag(holder);
}
else
{
holder = (RecipientHolder)row.getTag();
}

final Recipient recipient = data[position];
holder.txtTitle.setText(recipient.displayName);
holder.imgIcon.setImageResource(recipient.icon);

row.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
((MainActivity)context).onChildItemSelected(position);
if(isLastRow){
//((RecipientsFragment).getContext()).launchContactPicker();


((MainActivity)context)).launchContactPicker();


}
else{
Toast.makeText(getContext(), recipient.displayName, Toast.LENGTH_SHORT).show();
}
}
});

return row;
}

最佳答案

Adapter 不应调用任何点击监听器,也不应在 getView() 方法中附加点击监听器。相反,您应该使用 ListFragment,并简单地覆盖 onListItemClick()在 fragment 中。然后,您可以通过调用监听器接口(interface)回调将该事件分派(dispatch)给 Activity,或者直接在 Fragment 中处理它。您还可以使用 support library如果您想支持 SDK 11 发布之前的 Android 版本。

关于android - 我的业务逻辑应该在 fragment 中还是在上面的 Activity 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14427482/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com