【发布时间】:2022-08-17 03:31:45
【问题描述】:
我试图用我在单独的 xml 中创建的单元格填充这个 GridView
网格视图:
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"
xmlns:app=\"http://schemas.android.com/apk/res-auto\"
xmlns:tools=\"http://schemas.android.com/tools\"
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\"
android:background=\"#FF2C3C63\"
tools:layout_editor_absoluteX=\"11dp\"
tools:layout_editor_absoluteY=\"195dp\">
<Button
android:id=\"@+id/button\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:onClick=\"kamuScan\"
android:text=\"temp\"
app:layout_constraintBottom_toBottomOf=\"parent\"
app:layout_constraintStart_toStartOf=\"parent\" />
<Button
android:id=\"@+id/ScanningDone\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:text=\"Complete\"
app:layout_constraintBottom_toBottomOf=\"parent\"
app:layout_constraintEnd_toEndOf=\"parent\" />
<LinearLayout
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\"
app:layout_constraintBottom_toBottomOf=\"parent\"
app:layout_constraintEnd_toEndOf=\"parent\"
app:layout_constraintStart_toStartOf=\"parent\"
app:layout_constraintTop_toTopOf=\"parent\"
app:layout_constraintVertical_bias=\"0.941\">
<GridView
android:id=\"@+id/inputGridView\"
android:layout_width=\"wrap_content\"
android:layout_height=\"269dp\"
android:layout_gravity=\"center\"
android:columnWidth=\"200dp\"
android:gravity=\"center\"
android:nestedScrollingEnabled=\"true\"
android:numColumns=\"1\">
</GridView>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
单细胞:
<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"
xmlns:tools=\"http://schemas.android.com/tools\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:padding=\"5dp\" >
<TextView
android:id=\"@+id/barcodeTextView\"
android:layout_width=\"146dp\"
android:layout_height=\"wrap_content\"
android:singleLine=\"true\"
android:text=\"Barcode\"
android:textSize=\"20sp\" />
<Button
android:id=\"@+id/IncrementDown\"
android:layout_width=\"50dp\"
android:layout_height=\"58dp\"
android:text=\"-\">
</Button>
<EditText
android:id=\"@+id/Quantity\"
android:layout_width=\"51dp\"
android:layout_height=\"match_parent\"
android:inputType=\"numberSigned\"
android:maxLines=\"1\"
android:text=\"0\"
android:textAlignment=\"center\"/>
<Button
android:id=\"@+id/IncrementUp\"
android:layout_width=\"50dp\"
android:layout_height=\"58dp\"
android:text=\"+\">
</Button>
</LinearLayout>
适配器的类:
public class InputUIGenerator extends BaseAdapter{
private Context mContext;
public InputUIGenerator(Context c) {
mContext = c;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return 1;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View inputGridView;
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inputGridView = new View(mContext);
inputGridView = inflater.inflate(R.layout.input_grid_single, null);
TextView textView = (TextView) inputGridView.findViewById(R.id.barcodeTextView);
Button incrementUp = (Button) inputGridView.findViewById(R.id.IncrementUp);
Button incrementDown = (Button) inputGridView.findViewById(R.id.IncrementDown);
EditText quantity = (EditText) inputGridView.findViewById(R.id.Quantity);
return inputGridView;
}
}
以及应该显示所有内容的类:
public class InputPage extends Activity {
GridView inputGridView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.input_page);
InputUIGenerator generatorAdapter = new InputUIGenerator(this);
inputGridView=(GridView) findViewById(R.id.inputGridView);
inputGridView.setAdapter(generatorAdapter);
inputGridView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
}
});
这将创建一个带有 TextView、Button、TextEdit、Button 的单行,这很好。 创建新行的事件应该来自条形码扫描仪,为了替换它,我现在添加了一个按钮。 所以想要的结果是按下按钮,得到一个新行,并保留第一行的值。 这可能是错误的方法,我现在真的不确定,我应该怎么做。
另外,在最后,我想从单个单元格内的所有这些项目中收集数据,并且我真的不知道如何在生成它们时为它们动态分配 ID。 提前致谢。