我正在尝试创建具有 3 个片段(页面)的应用程序。在每个片段中,我都有几个微调器(可供选择的选项)。用户可以选择不同的选项,根据这些选项的组合,他会看到价格。
我在主要活动中使用以下代码
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
import android.os.Bundle;
import com.example.myapplication.fragments.PageFragment1;
import com.example.myapplication.fragments.PageFragment2;
import com.example.myapplication.fragments.PageFragment3;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private ViewPager pager;
private PagerAdapter pagerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
List<Fragment> list = new ArrayList<>();
list.add(new PageFragment1());
list.add(new PageFragment2());
list.add(new PageFragment3());
pager = findViewById(R.id.pager);
pagerAdapter = new SlidePageAdapter(getSupportFragmentManager(),list);
pager.setAdapter(pagerAdapter);
}
}
PageAdapter 中的以下代码
package com.example.myapplication;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter;
import java.util.List;
public class SlidePageAdapter extends FragmentStatePagerAdapter {
private List<Fragment> fragmentList;
public SlidePageAdapter(FragmentManager fm, List<Fragment> fragmentList) {
super(fm);
this.fragmentList = fragmentList;
}
@NonNull
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public int getCount() {
return fragmentList.size();
}
}
在 PageFragment1
package com.example.myapplication.fragments;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.PagerAdapter;
import com.example.myapplication.R;
import com.google.android.material.navigation.NavigationBarView;
public class PageFragment1 extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
ViewGroup rootView = (ViewGroup) inflater
.inflate(R.layout.page_1, container
, false);
Spinner spinner1 = (Spinner) rootView.findViewById(R.id.spinnerMarket);
ArrayAdapter<CharSequence> adapter1 = ArrayAdapter.createFromResource(getActivity(), R.array.Market, android.R.layout.simple_spinner_item);
adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(adapter1);
Spinner spinner2 = (Spinner) rootView.findViewById(R.id.spinnerEmission);
ArrayAdapter<CharSequence> adapter2 = ArrayAdapter.createFromResource(getActivity(), R.array.Emissions, android.R.layout.simple_spinner_item);
adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner2.setAdapter(adapter2);
Spinner spinner3 = (Spinner) rootView.findViewById(R.id.spinnerAxles);
ArrayAdapter<CharSequence> adapter3 = ArrayAdapter.createFromResource(getActivity(), R.array.Axles, android.R.layout.simple_spinner_item);
adapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner3.setAdapter(adapter3);
Spinner spinner4 = (Spinner) rootView.findViewById(R.id.spinnerGearbox);
ArrayAdapter<CharSequence> adapter4 = ArrayAdapter.createFromResource(getActivity(), R.array.Gearbox, android.R.layout.simple_spinner_item);
adapter4.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner4.setAdapter(adapter4);
Spinner spinner5 = (Spinner) rootView.findViewById(R.id.spinnerFrontSuspension);
ArrayAdapter<CharSequence> adapter5 = ArrayAdapter.createFromResource(getActivity(), R.array.FrontSuspension, android.R.layout.simple_spinner_item);
adapter5.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner5.setAdapter(adapter5);
Spinner spinner6 = (Spinner) rootView.findViewById(R.id.spinnerRearSuspension);
ArrayAdapter<CharSequence> adapter6 = ArrayAdapter.createFromResource(getActivity(), R.array.RearSuspension, android.R.layout.simple_spinner_item);
adapter6.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner6.setAdapter(adapter6);
Spinner spinner7 = (Spinner) rootView.findViewById(R.id.spinnerTrailAxle);
ArrayAdapter<CharSequence> adapter7 = ArrayAdapter.createFromResource(getActivity(), R.array.TrailAxle, android.R.layout.simple_spinner_item);
adapter7.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner7.setAdapter(adapter7);
spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
@Override
public void onItemSelected(AdapterView<?> adapterView, View view,
int position, long id) {
//Some conditions for all spinners//
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
return rootView;
}
}
问题是我有 7 个微调器,价格计算的条件是相同的。所以我必须为每个微调器放置相同的代码,这样每次用户选择不同的选项时程序都会调整价格。 我觉得有点奇怪,因为程序越来越大。我还有两个结构相同的片段。 我试图在下面放置类似下面的内容而不是每个微调器的代码
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//conditions//
}
但它在片段中不起作用。 我在编码方面绝对是新手,所以你能给我详细的建议吗?